Obl*_*ngo 3 sql-server stored-procedures
我在MS SQL服务器上有两个数据库(firstDB和secondDB).在firstDB中有过程[dbo].[MaintaineIndexes],在secondDB中有DatabaseEventsTrigger.
我想在运行[dbo]时禁用secondDB DatabaseEventsTrigger.[MaintaineIndexes].
所以我尝试了:
ALTER PROCEDURE [dbo].[MaintaineIndexes]
AS
BEGIN
DISABLE TRIGGER DatabaseEventsTrigger ON secondDB;
...
ENABLE TRIGGER DatabaseEventsTrigger ON secondDB;
END;
Run Code Online (Sandbox Code Playgroud)
当我正在运行过程时,我收到错误消息:"找不到对象"secondDB",因为它不存在或者您没有权限.";
好的,然后我尝试了:
DISABLE TRIGGER DatabaseEventsTrigger ON ALL SERVER;
Run Code Online (Sandbox Code Playgroud)
禁用触发器仅使用此命令:
USE [secondDB]
GO
DISABLE TRIGGER DatabaseEventsTrigger ON DATABASE;
Run Code Online (Sandbox Code Playgroud)
但我们不能在程序中使用"USE"!那么,在我的情况下如何启用/禁用触发器?
使用动态SQL:
ALTER PROCEDURE [dbo].[MaintaineIndexes]
AS
BEGIN
EXEC('DISABLE TRIGGER DatabaseEventsTrigger ON secondDB');
...
EXEC('ENABLE TRIGGER DatabaseEventsTrigger ON secondDB');
END;
Run Code Online (Sandbox Code Playgroud)
要么:
ALTER PROCEDURE [dbo].[MaintaineIndexes]
AS
BEGIN
EXEC('USE [secondDB]; DISABLE TRIGGER DatabaseEventsTrigger ON DATABASE;');
...
EXEC('USE [secondDB]; ENABLE TRIGGER DatabaseEventsTrigger ON DATABASE;');
END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6894 次 |
| 最近记录: |