Читайте также: |
|
-- **********************************************************************
-- Создаем хранимую процедуру удаления всех SQL DML триггеров
-- **********************************************************************
IF OBJECT_ID('dbo.drop_all_SQL_DML_triggers', 'P') IS NOT NULL
DROP PROCEDURE dbo.drop_all_SQL_DML_triggers
GO
CREATE PROCEDURE drop_all_SQL_DML_triggers @cnt int OUTPUT
AS
BEGIN
DECLARE @trigger_name nvarchar(255), @SqlString nvarchar(1000)
SET @cnt = 0
DECLARE trigger_list CURSOR FORWARD_ONLY STATIC FOR
SELECT name FROM sys.objects WHERE type = 'TR'
OPEN trigger_list
FETCH NEXT FROM trigger_list into @trigger_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cnt = @cnt+1
SET @SqlString = N'IF OBJECT_ID(N''[dbo].['+@trigger_name+']'', ''TR'') IS NOT NULL DROP TRIGGER [dbo].['+@trigger_name+']'
EXEC (@SqlString)
FETCH NEXT FROM trigger_list into @trigger_name
END
CLOSE trigger_list
DEALLOCATE trigger_list
END
GO
-- **********************************************************************
-- Проверяем хранимую процедуру удаления всех SQL DML триггеров
-- **********************************************************************
DECLARE @cnt int
EXEC drop_all_SQL_DML_triggers @cnt OUTPUT
SELECT @cnt
EXEC drop_all_SQL_DML_triggers @cnt OUTPUT
SELECT @cnt
GO
-----------------
Отредактировать! (вариант 17)
USE dbFAS
GO
IF OBJECT_ID (N'drop_all_triggers') IS NOT NULL
DROP PROCEDURE drop_all_triggers
GO
CREATE PROCEDURE drop_all_triggers
AS
--DECLARE - При помощи этой инструкции можно объявлять переменные
--курсоров для использования в других инструкциях
DECLARE @sql NVARCHAR(MAX) = '';
DECLARE @name sysname;
DECLARE LILU CURSOR
FOR
SELECT name FROM sys.triggers;
OPEN LILU;
FETCH NEXT FROM LILU INTO @name;
WHILE (@@FETCH_STATUS=0)
BEGIN
SELECT @sql = 'DROP TRIGGER ' + @name + ' ON DATABASE; ';
EXEC (@SQL);
FETCH NEXT FROM LILU INTO @name;
END;
CLOSE LILU;
DEALLOCATE LILU;
EXEC drop_all_triggers;
CREATE TABLE t(id int)
Вариант 17
Создать и протестировать хранимую процедуру на T-SQL, которая удаляет все SQL DDL триггеры в текущей базе данных. Выходной параметр процедуры возвращает количество удаленных триггеров.
USE dbFAS
GO
CREATE TRIGGER [asd]
ON DATABASE
FOR CREATE_TABLE
AS
PRINT 'You must disable Trigger "ddl" to drop trigger!';
--ROLLBACK;
GO
USE dbFAS
GO
IF OBJECT_ID (N'drop_all_triggers') IS NOT NULL
DROP PROCEDURE drop_all_triggers
GO
CREATE PROCEDURE drop_all_triggers
AS
--DECLARE - При помощи этой инструкции можно объявлять переменные
--курсоров для использования в других инструкциях
DECLARE @sql NVARCHAR(MAX) = '';
DECLARE @name sysname;
DECLARE LILU CURSOR
FOR
SELECT name FROM sys.triggers;
OPEN LILU;
FETCH NEXT FROM LILU INTO @name;
WHILE (@@FETCH_STATUS=0)
BEGIN
SELECT @sql = 'DROP TRIGGER ' + @name + ' ON DATABASE; ';
EXEC (@SQL);
FETCH NEXT FROM LILU INTO @name;
END;
CLOSE LILU;
DEALLOCATE LILU;
EXEC drop_all_triggers;
CREATE TABLE t(id int)
----------------------------
Дата добавления: 2015-02-16; просмотров: 73 | Поможем написать вашу работу | Нарушение авторских прав |