我实现了一个CLR存储过程的"HelloWorld"示例,它运行正常。
然后我更改了代码,重新编译并运行它,但是得到的是旧的结果,而不是新的结果。
代码更改示例(其他所有代码都在上面的链接中):
之前:
SqlContext.Pipe.Send("Hello world!\n");
之后:
SqlContext.Pipe.Send("Hello world new version!\n");
除了重新加载 SQL 以获取新的程序集外,还有其他方法吗?
我实现了一个CLR存储过程的"HelloWorld"示例,它运行正常。
然后我更改了代码,重新编译并运行它,但是得到的是旧的结果,而不是新的结果。
代码更改示例(其他所有代码都在上面的链接中):
之前:
SqlContext.Pipe.Send("Hello world!\n");
之后:
SqlContext.Pipe.Send("Hello world new version!\n");
除了重新加载 SQL 以获取新的程序集外,还有其他方法吗?
假设你已经用C#创建了一个CLR函数HelloSQLCLR()
在调用它之前,你需要完成以下步骤:
启用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'
ALTER ASSEMBLY ...
应该刷新为新的位。 - Remus Rusanu您需要重新创建基于CLR的存储过程,仅更改DLL是不够的。