我实现了一个 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 来加载新的程序集,还有什么不足之处吗?
假设您 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'
你需要重新创建基于CLR的存储过程,仅仅改变DLL是不够的。