从主数据库引用 CLR 触发器
Reference CLR Triggers from the master database
我已经在 SQL 服务器的主数据库上创建了一个 CLR 程序集。
此程序集定义了 CLR 触发器函数,我想在 SQL 语句中将这些函数附加到服务器上其他数据库中的表。
像这样:
USE myDb;
CREATE TRIGGER myTrigger ON myTable FOR INSERT,UPDATE,DELETE
AS EXTERNAL NAME [master].[dbo].myAssembly.TriggerClass.Report;
有什么好的方法可以让它发挥作用吗?
所有 SQLCLR 对象类型的 EXTERNAL NAME
子句仅允许引用当前数据库中的程序集。问题中所需代码示例中的 database_name.schema_name.
部分是无效语法。您可以在 CREATE TRIGGER 的 MSDN 页面上看到这个:
https://msdn.microsoft.com/en-us/library/ms189799.aspx
您需要将程序集添加到要在其中使用触发器的任何数据库。
而且,如果您可以在其他数据库中引用程序集,您最好还是创建一个 "Utility" 数据库(或其他名称,如 Common 等),而不是将对象添加到系统数据库: -).
我已经在 SQL 服务器的主数据库上创建了一个 CLR 程序集。
此程序集定义了 CLR 触发器函数,我想在 SQL 语句中将这些函数附加到服务器上其他数据库中的表。
像这样:
USE myDb;
CREATE TRIGGER myTrigger ON myTable FOR INSERT,UPDATE,DELETE
AS EXTERNAL NAME [master].[dbo].myAssembly.TriggerClass.Report;
有什么好的方法可以让它发挥作用吗?
所有 SQLCLR 对象类型的 EXTERNAL NAME
子句仅允许引用当前数据库中的程序集。问题中所需代码示例中的 database_name.schema_name.
部分是无效语法。您可以在 CREATE TRIGGER 的 MSDN 页面上看到这个:
https://msdn.microsoft.com/en-us/library/ms189799.aspx
您需要将程序集添加到要在其中使用触发器的任何数据库。
而且,如果您可以在其他数据库中引用程序集,您最好还是创建一个 "Utility" 数据库(或其他名称,如 Common 等),而不是将对象添加到系统数据库: -).