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