早上好。我目前遇到 CLR 存储过程调用在 Visual Basic (VS 2008) 中创建的程序集的问题。在最高级别,程序集执行 Cognos8 中包含的报告并将输出移动到网络上的特定目录。从简单的测试 EXE 调用该方法时我没有问题,但是当我尝试通过 CLR 存储过程执行时,我得到以下信息:
消息 6522,级别 16,状态 1,过程 ReportRunner,第 0 行
在执行用户定义的例程或聚合“ReportRunner”期间发生 .NET Framework 错误:
System.IO.FileNotFoundException:无法加载文件或程序集“cognosdotnetassembly_2_0,版本=10.1.4707.501,Culture=neutral,PublicKeyToken=d6e6d7d808b7e5b7”或其依赖项之一。该系统找不到指定的文件。System.IO.FileNotFoundException:
在 System.Reflection.Assembly._nLoad(AssemblyName 文件名,字符串 codeBase,证据 assemblySecurity,程序集 locationHint,StackCrawlMark 和 stackMark,布尔 throwOnFileNotFound,布尔 forIntrospection)
在 System.Reflection.Assembly.nLoad(AssemblyName 文件名,字符串 codeBase,证据 assemblySecurity,程序集 locationHint,StackCrawlMark 和 stackMark,布尔 throwOnFileNotFound,布尔 forIntrospection)
在 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,证据 assemblySecurity,StackCrawlMark 和 stackMark,Boolean for Introspection)
在 System.Reflection.Assembly.LoadWithPartialNameInternal(字符串部分名称,证据 securityEvidence,StackCrawlMark 和 stackMark)
在 System.Reflection.Assembly.LoadWithPartialName(字符串部分名称,证据 securityEvidence)
在 System.Xml.Serialization.TempAssembly.LoadGeneratedAssembly(类型类型,字符串 defaultNamespace,XmlSerializerImplementation& 合同)
在 System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] 映射,类型类型) 在 System.Web.Services.Protocols.SoapClientType..ctor(类型类型)
在 System.Web.Services.Protocols.SoapHttpClientProtocol..ctor() 在 cognosdotnet_2_0.reportService1..ctor()
在 ReportRunnerv3.ReportRunner.ExecuteReport(Int32 inPLAN_ID,Int32 inContract_Sfx,字符串 inRptDate_DT,字符串 inPlanType,字符串 inInvstmentOnlyInd,字符串 inMOMInd,字符串 inGPSIInd,字符串 inPBTInd,字符串 inPICAInd,字符串 inClientAccomInd,字符串 inInstSelectInd,字符串 inRptType,Int32 和 outRC)
注释 •cognosdotnetassembly_2_0 与“ReportRunner”程序集位于同一目录中 •cognosdotnetassembly_2_0 使用CREATE ASSEMBLY 进行编目,权限集=不安全 •cognosdotnetassembly_2_0 也安装在GAC 中
以下是 fuslogvw.exe 提供的消息:
*组装活页夹日志条目(8/11/2011 @ 5:57:39 AM)*
操作失败。
绑定结果:hr = 0x80070002。该系统找不到指定的文件。
程序集管理器从以下位置加载:c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
在可执行文件 c:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Binn\sqlservr.exe 下运行
--- 详细的错误日志如下。
=== 预绑定状态信息 ===
日志:用户 = NT AUTHORITY\NETWORK SERVICE
日志:DisplayName = cognosdotnetassembly_2_0,Version=10.1.4707.501,Culture=neutral,PublicKeyToken=d6e6d7d808b7e5b7(完全指定)
日志:Appbase = file:///c:/Program Files/Microsoft SQL Server/MSSQL10_50.SQLEXPRESS/MSSQL/Binn/
日志:初始 PrivatePath = NULL
日志:动态基础 = NULL
日志:缓存基础 = NULL
日志:AppName = NULL
调用程序集:System.Xml,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089。
===
LOG:此绑定在默认加载上下文中开始。LOG:未找到应用程序配置文件。
LOG:使用来自 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config 的机器配置文件。
日志:后策略参考:cognosdotnetassembly_2_0,Version=10.1.4707.501,Culture=neutral,PublicKeyToken=d6e6d7d808b7e5b7
LOG:托管 Fusion。检查主机关于这个程序集。
日志:程序集不在 CLR 加载列表中。询问主机组装店。
日志:尝试使用程序集 cognosdotnetassembly_2_0、version=10.1.4707.501、culture=neutral、publickeytoken=d6e6d7d808b7e5b7、processorarchitecture=x86 托管程序集存储。
日志:尝试使用程序集 cognosdotnetassembly_2_0、version=10.1.4707.501、culture=neutral、publickeytoken=d6e6d7d808b7e5b7、processorarchitecture=msil 来托管程序集存储。
日志:尝试使用程序集 cognosdotnetassembly_2_0、version=10.1.4707.501、culture=neutral、publickeytoken=d6e6d7d808b7e5b7 来托管程序集存储。
警告:主机程序集存储不包含此程序集。
ERR:预下载检查期间发生不可恢复的错误(hr = 0x80070002)。
有人可以提供有关为什么 SQL Server 无法找到 cognosdotnetassembly_2_0 的见解吗?
如果您需要更多信息,请告诉我。
感谢你的协助。
- 克里斯