通常情况下,我不会卡在SQL上,而且我不会放弃大量自己的研究。但是我已经筋疲力尽了我能想到的所有想法以及我能想到的所有可能性。
情况:程序员为我构建了一个CLR触发器。 (我是SQL Guy,而不是C#家伙)。这个触发器使用文件系统,所以需要改变一些事情,因为我们现在还没有打扰它。
所以在安装之前在数据库中运行以下内容
ALTER DATABASE [DBName] SET TRUSTWORTHY ON;
USE [DBName]
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
EXEC sp_changedbowner 'sa'
GO
之后。我执行了一个连接数据库并安装触发器的UI。直到最近,这没有问题。然后在卸载并重新安装后,它就不再有效了。
现在,当前代码在他的环境中的机器上运行。安装/卸载。如果我把值得信赖的回归
ALTER DATABASE [DBName] SET TRUSTWORTHY OFF;
它尝试加载程序集并失败。把它重新打开。它应该加载组件。但触发器没有做任何事情。以供参考。我们都使用相同的数据库相同的用户ID(现在用于测试)。
所以我想我的问题。我怎么知道它真正加载了组件?为什么组件没有抛出错误或做了它应该做的标准事情,比如创建日志文件。
例如,首要任务之一是创建日志文件。它从存储在服务器上的XML文件中读取数据。我把日志文件放在abc中。所以它应该是错误的,就像我无法找到这个位置或其他东西。但没什么。所以对我来说,装配似乎根本没有加载。任何验证程序集的方法都是真正加载和执行的吗?
任何人都可以告诉我如何查看输出或调试中可能未显示的任何错误?
答案 0 :(得分:0)
所以这在C#代码中完全是错误的。我的程序员终于找到了错误。 SQL端没有任何问题。我疯了。感谢阅读此内容的任何人。我道歉。
他正在从错误的位置读取某些目录位置。如果目录不存在,他退出代码。他感觉很糟糕,我感到宽慰。谢谢你的烦心。