更改SQL Server程序集会导致设置属性错误

时间:2018-11-20 21:08:47

标签: sql-server reporting-services clr

我有一个运行SSRS报告的CLR。我是三年前创建的,本周不得不对其进行更新(更改了硬编码的IP)。这是我写过的唯一一本书,因此我在2015年撰写了有关如何更新它的说明。最初似乎可以正常工作-我从C#项目重建了dll,将dll保存在服务器中的旧dll上,然后运行以下命令:

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

现在运行它会产生以下错误:“未找到设置属性'CLRtest4_hdnysql1_ReportExecutionService'”。

在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。有,而且自三年前以来就没有改变过。我一直在网上搜索,找不到有关此错误的任何信息;除了三年前弄清楚它之外,我没有其他背景,并且会非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

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

  

CLRtest4_hdnysql1_ReportExecutionService

应该存在于配置文件中。

答案 1 :(得分:0)

我与一家SQL咨询公司交谈并得到了答案;我会在此处发布公司名称,但不确定是否违反StackOverflow规则。

配置文件必须命名为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;

此问题已解决。