Читайте также: |
|
-- **********************************************************************
-- Создаем хранимую процедуру удаления всех SQL функций пользователя
-- **********************************************************************
IF OBJECT_ID('dbo.drop_all_SQL_functions', 'P') IS NOT NULL
DROP PROCEDURE dbo.drop_all_SQL_functions
GO
CREATE PROCEDURE dbo.drop_all_SQL_functions @cnt int OUTPUT
AS
BEGIN
DECLARE @function_name nvarchar(255), @SqlString nvarchar(1000)
SET @cnt = 0
DECLARE function_list CURSOR FORWARD_ONLY STATIC FOR
SELECT name FROM sys.objects WHERE type = 'FN' OR type = 'IF' OR type = 'TF'
OPEN function_list
FETCH NEXT FROM function_list into @function_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @cnt = @cnt+1
SET @SqlString = N'IF OBJECT_ID(N''[dbo].['+@function_name+']'', ''FN'') IS NOT NULL
DROP FUNCTION [dbo].['+@function_name+']'
EXEC (@SqlString)
SET @SqlString = N'IF OBJECT_ID(N''[dbo].['+@function_name+']'', ''IF'') IS NOT NULL
DROP FUNCTION [dbo].['+@function_name+']'
EXEC (@SqlString)
SET @SqlString = N'IF OBJECT_ID(N''[dbo].['+@function_name+']'', ''TF'') IS NOT NULL
DROP FUNCTION [dbo].['+@function_name+']'
EXEC (@SqlString)
FETCH NEXT FROM function_list into @function_name
END
CLOSE function_list
DEALLOCATE function_list
END
GO
-- **********************************************************************
-- Проверяем хранимую процедуру удаления всех SQL функций бпользователя
-- **********************************************************************
SELECT * FROM sys.sql_modules
GO
DECLARE @cnt int
EXEC dbo.drop_all_SQL_functions @cnt OUTPUT
SELECT @cnt
EXEC dbo.drop_all_SQL_functions @cnt OUTPUT
SELECT @cnt
GO
SELECT * FROM sys.sql_modules
GO
Вариант 12
Создать хранимую процедуру с выходным параметром, которая выводит текст на языке SQL всех скалярных SQL функций пользователя (функции типа 'FN') в текущей базе данных, имена которых начинаются с префикса 'ufn'. Выходной параметр возвращает количество найденных функций. Созданную хранимую процедуру протестировать.
Рекомендации.
--------------
DROP PROCEDURE MetadataWorker GO CREATE PROCEDURE MetadataWorker @count INT OUT WITH RECOMPILE AS BEGIN SELECT sm.definition as Def FROM sys.objects AS o JOIN sys.sql_modules AS sm ON sm.object_id = o.object_id WHERE o.type = 'FN' AND o.name LIKE '%'; SET @count = @@ROWCOUNT; END GO DECLARE @c int; EXEC MetadataWorker @c OUT; PRINT @c; GO вместо '%' там 'ufn%' или что то такое - в условии префикс указан |
Вариант 13
Создать хранимую процедуру с выходным параметром, которая выводит список имен и параметров всех скалярных SQL функций пользователя (функции типа 'FN') в текущей базе данных. Имена функций без параметров не выводить. Имена и список параметров должны выводиться в одну строку. Выходной параметр возвращает количество найденных функций. Созданную хранимую процедуру протестировать.
Рекомендации.
Вариант 14
Создать хранимую процедуру с выходным параметром, которая уничтожает все представления в текущей базе данных, которые не были зашифрованы. Выходной параметр возвращает количество уничтоженных представлений. Созданную хранимую процедуру протестировать.
Рекомендации.
Дата добавления: 2015-02-16; просмотров: 63 | Поможем написать вашу работу | Нарушение авторских прав |