从主数据库引用CLR触发器

时间:2015-11-18 11:25:38

标签: sql .net sql-server clr sqlclr

我在SQL Server的主数据库上创建了一个CLR程序集。

此程序集定义了CLR触发器函数,我想在SQL语句中将这些函数附加到服务器上其他数据库中的表。

这样的事情:

USE myDb;
CREATE TRIGGER myTrigger ON myTable FOR INSERT,UPDATE,DELETE
AS EXTERNAL NAME [master].[dbo].myAssembly.TriggerClass.Report;

有没有一种方法可以让它发挥作用?

1 个答案:

答案 0 :(得分:0)

所有SQLCLR对象类型的EXTERNAL NAME子句仅允许引用当前数据库中的程序集。问题中示例所需代码中的database_name.schema_name.部分是无效语法。您可以在以下位置的MSDN页面上看到CREATE TRIGGER:

https://msdn.microsoft.com/en-us/library/ms189799.aspx

您需要将程序集添加到要使用Trigger的任何数据库中。

而且,如果您可以在其他数据库中引用Assemblies,那么您最好还是创建一个“Utility”数据库(或其他名称,如Common等),而不是将对象添加到系统数据库中: - )。 / p>