更改 SQL 服务器程序集会导致设置 属性 错误

Altering a SQL Server assembly casues a settings property error

我有一个运行 SSRS 报告的 CLR。我三年前创建了它,本周不得不更新它(硬编码 IP 已更改)。这是我唯一写过的,所以我在 2015 年写了关于如何更新它的笔记。这最初似乎有效——我从 C# 项目重建 dll,将 dll 保存在服务器中的旧 dll 上,然后 运行 以下命令:

alter assembly CLRtest4 from 'c:\HMCA_DLLs\CLRTest4.dll' with permission_set = SAFE;

运行 现在出现以下错误:"The settings property 'CLRtest4_hdnysql1_ReportExecutionService' was not found"。

在 C# 中我有:

// Report Server Settings
            var reportExecutionService = new ReportExecutionService();

            reportExecutionService.Credentials = System.Net.CredentialCache.DefaultCredentials;

            System.Net.NetworkCredential nc = new System.Net.NetworkCredential("DDR", "<password>");
            reportExecutionService.Credentials = nc;

            reportExecutionService.Url = "http://hdnysql1/reportserver/reportexecution2005.asmx";

此代码尚未被修改。我检查了目录中有一个 dll.config 文件和 DLL;有,而且从三年前就没变过。我一直在网上搜索,但找不到有关此错误的任何信息;我在这方面没有任何背景,只是三年前想过一次,非常感谢任何帮助。

您的 DLL 配置文件应与您的 DLL 同名。设置

CLRtest4_hdnysql1_ReportExecutionService

应该存在于配置文件中。

我与一家 SQL 咨询公司交谈并得到了答案;我会 post 这里的公司名称,但我不确定这是否违反 Whosebug 规则。

配置文件必须命名为 sqlserver.exe.config,并且必须位于我通过以下查询获得的 binn 文件夹中:

SELECT [filename] FROM sys.dm_server_services WHERE servicename LIKE N'SQL Server (%';

该文件存在于该位置,但由于某种原因没有相关的配置行,即使代码以前有效。大概在文件移动之前以某种方式缓存了正确的配置。我将正确的配置文件复制到那个目录,并重命名它,然后

DBCC FREESYSTEMCACHE('ALL')

接着是

alter assembly CLRtest4 from 'c:\HMCA_DLLs\CLRTest4.dll' with permission_set = UNSAFE;

这解决了问题。