我在 .NET 中为 SQL Server 2008 R2 中的一些自定义 CLR 空间函数创建了一个 dll。我将 dll 连同脚本一起发送给同事以部署它(创建组件然后创建外部函数等)。
她问她是否需要在使用 CREATE ASSEMBLY 注册文件后将其保存在同一位置。我不知道,所以我通过在 sql server 中注册一个程序集并从中创建函数来进行实验。然后我重命名了dll并重新启动了sql server。我发现在此之后这些功能仍然有效,所以似乎 sql server 已经以某种方式加载了 dll,它不需要留在文件系统上。然而,令人费解的是,表 sys.assembly_files 确实存储了 dll 的原始路径。如果它不相关,为什么要这样做?
所以我不确定我的测试是否正确。但是有人知道 CREATE ASSEMBLY 对 dll 的作用吗?它会在某处复制/导入吗?还是我的测试有缺陷并且 sql server 确实需要原始 dll 留在同一位置?
提前致谢。
这些位被复制到您调用
CREATE ASSEMBLY
或的数据库中ALTER ASSEMBLY
。您在 Management Studio 中选择的路径只是为了方便它读取文件并将位转储到一个
varbinary(MAX)
值中(点击该对话框中的脚本按钮以了解我的意思)。这也意味着如果您在另一台服务器上执行诸如备份/恢复之类的操作,则程序集将随数据库“携带”。