2

我实现了一个 CLR 存储过程的“HelloWorld”示例,它工作正常。

然后我更改了代码,重新编译并重新运行它,得到的是旧结果,而不是新结果。

示例代码更改(所有其他代码都在上面的链接中):

前:

SqlContext.Pipe.Send("Hello world!\n");

后:

SqlContext.Pipe.Send("Hello world new version!\n");

除了回收 SQL 来加载新的程序集,还有什么不足之处吗?

4

2 回答 2

5

假设您 HelloSQLCLR()在 C#中创建了一个 CLR 函数,
您需要以下步骤才能在 Sql Server 中调用它
启用 SQLCLR

sp_configure 'clr_enabled', 1
GO
RECONFIGURE
GO

安装并注册 HelloSQLCLR

安装(将目录更改为实际位置)

CREATE ASSEMBLY MyUDFsLib
    FROM 'C:\Path_To_Your_DLL\HelloSQLCLR.dll'
GO

登记

CREATE FUNCTION dbo.HelloSQLCLR()
    RETURNS NVARCHAR(50)
    EXTERNAL NAME MyUDFsLib.MyUDFs.HelloSQLCLR;

测试一下

SELECT dbo.HelloSQLCLR() 

编辑
如果您更改了代码,请尝试类似这样

ALTER ASSEMBLY MyUDFsLib 
FROM 'C:\Path_your_changed_Recomplied_DLL\.dll' 
于 2013-11-04T20:27:39.917 回答
0

你需要重新创建基于CLR的存储过程,仅仅改变DLL是不够的。

于 2013-11-04T20:18:07.050 回答