【发布时间】:2017-07-09 23:05:39
【问题描述】:
我正在尝试部署一个 CLR 触发器,该触发器链接到包含我编写的库的外部 .dll 文件。现在我只想能够在本地数据库上测试代码。我已将本地数据库设置为 Trustworthy = True 并且外部程序集访问我的用户名。我还添加了对我尝试使用的外部库的引用,但是当我调用该函数时出现此错误
Severity Code Description Project File Line Suppression State
Error SQL72014: .Net SqlClient Data Provider: Msg 6503, Level 16,
State 12, Line 1 Assembly 'googlecalendersync, version=1.0.0.0,
culture=neutral, publickeytoken=fab9d21c96557bef.' was not found in the SQL
catalog. Test3 C:\Users\dwd002\Documents\Visual Studio
2015\Projects\Test3\Test3\bin\Debug\Test3.sql 52
任何帮助将不胜感激。我现在知道我这样做的方式是不安全的,现在这只是一个概念证明。构建库 .dll 时我做错了什么吗?
【问题讨论】:
-
您可以使用
create assembly语句将该程序集添加到您的数据库中吗? -
事实证明这将是唯一的解决方案,但由于该项目包含 12 个左右的外部 dll,因此添加它们会很痛苦,并且网络管理员不想将数据库更改为不安全代码。因此,解决方法是创建我想在 c# 项目中执行的所有代码并将其编译成 .exe,然后从触发器运行该 .exe。 c# 项目只会从外部连接到数据库。
标签: c# sql-server clr