Как программно скопировать и переименовать VIEW / SP в SQL Server? - PullRequest
1 голос
/ 12 марта 2012

Я знаю, что вы можете щелкнуть правой кнопкой мыши на выбранном VIEW / SP и выбрать CREATE-TO, и вы можете просто скопировать сгенерированный скрипт. Но это должно быть сделано через клиент SQL.

Что я хочу сделать, так это то, что всякий раз, когда мой поставщик обновляет VIEW / SP, я хотел бы выполнить резервное копирование уязвимого VIEW / SP перед запуском команды ALTER VIEW / SP от моего поставщика. Я хочу сделать это, используя сценарий, а не человеческий интерфейс, чтобы уменьшить риск человеческих ошибок.

Может кто-нибудь помочь?

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Это должно помочь вам начать.

DECLARE @SQL VARCHAR(MAX)
SET @SQL = (    SELECT  Routine_Definition
                FROM    (   SELECT  Routine_Catalog, Routine_Schema, Routine_Name, Routine_Definition
                            FROM    INFORMATION_SCHEMA.ROUTINES
                            WHERE   Routine_type  = 'PROCEDURE'
                            UNION ALL
                            SELECT  Table_Catalog, Table_Schema, Table_Name, View_Definition
                            FROM    INFORMATION_SCHEMA.VIEWS
                        ) def
                WHERE   Routine_Catalog = 'YourDatabase'
                AND     Routine_Schema = 'YourSchema'
                AND     Routine_Name = 'YourView/SP'
            )

IF @SQL IS NULL
    RETURN

EXEC SP_RENAME 'YourDatabase.YourSchema.YourView/SP', 'NewName', 'OBJECT'
EXEC (@sql)
0 голосов
/ 12 марта 2012

Ниже приведена ссылка, где вы можете найти, как создать / изменить / удалить хранимую процедуру, используя код C #

Вы можете создать интерфейсную форму (GUI) в C # или по желаемой технологии и в этой форме Ваш поставщик вводит подробности хранимых процедур.

http://msdn.microsoft.com/en-us/library/ms162190.aspx

Ниже приведены сценарии, которые вы запускаете в базе данных, чтобы найти подробную информацию об изменениях / созданных хранимых процедурах

SELECT name 'Alterd Procedures'
FROM sys.objects
WHERE type = 'P'
AND DATEDIFF(D,modify_date, GETDATE()) < 5

SELECT name 'Created Procedures'
FROM sys.objects
WHERE type = 'P'
AND DATEDIFF(D,create_date, GETDATE()) < 5

5 - это число дней, вы можете изменить это в соответствии с вашими потребностями

вы можете изменить 'P' на 'V' для представлений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...