SQL Server存储部署的CLR程序集的位置在哪里?

5

我创建了一个SQL CLR用户定义函数,并将其部署到SQL Server实例上的一个数据库中,它已经正常工作。

SQL Server在哪里存储已部署的CLR程序集?它们是存储在文件系统的某个位置吗?


点击部署在哪里? - J0e3gan
1个回答

6
已部署的用户CLR程序集存储在您部署它们的数据库中,而不是文件系统中。
执行。
SELECT * FROM sys.assembly_files 

content这一列包含的是二进制数据,而且是程序集。

请参见CREATE ASSEMBLY:

创建一个托管应用程序模块,该模块包含类元数据和托管代码作为SQL Server实例中的对象。通过引用此模块,可以在数据库中创建公共语言运行时 (CLR) 函数、存储过程、触发器、用户定义的聚合函数和用户定义类型。


点赞。它对性能有多大的帮助?我们在C#中有很多函数,既需要在SQL中使用,也需要在C#中使用,因为它们基本上做着相同的工作。 - Expert Novice
还有,我该如何防止部署pdb文件。 - Expert Novice
创建代码的发布版本。 "性能如何?" - 没有上下文是没有意义的。 TSQL字符串处理可能会很慢; 我倾向于在CLR过程中执行此操作。 - Mitch Wheat
1
如果您正在使用Visual Studio/SSDT,则可以通过在“项目属性”的SQLCLR选项卡上取消选中“包括符号”选项,来防止.pdb文件的部署。 - Solomon Rutzky
1
@ExpertNovice和Mitch:在这个答案中澄清一下会很有帮助,即sys.assembly_files中的Assembly本身始终为file_id = 1。其他文件,如.pdb文件等(如果有的话),将是file_id> 1。另外,有没有任何理由不接受这个答案?它是正确的,尤其是如果添加了关于file_id = 1的澄清 :-)。 - Solomon Rutzky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接