Чтобы избежать случайной потери/повреждения хранимых процедур, над созданием которых вы так усердно работали, или если вы хотите восстановить предыдущую версию хранимых процедур, это обеспечивает эффективный метод автоматического резервного копирования хранимых процедур в указанном месте. база данных.
1. Создайте таблицу данных StoredProceduresBackup в определенной базе данных (рекомендуется быть главной базой данных SQL Server), чтобы сохранить резервную копию хранимых процедур.
ЕСЛИ OBJECT_ID('StoredProceduresBackup') НЕ НУЛЬ
DROP TABLE StoredProceduresBackup
GO
CREATE TABLE StoredProceduresBackup
(
AutoID INTEGER IDENTITY(1,1) PRIMARY KEY,
InsertDate DATETIME DEFAULT GETDATE(),
Имя базы данных VARCHAR(50),
Имя процедуры VARCHAR(50),
Текст процедуры VARCHAR(4000)
)
GO
2. Создайте хранимую процедуру с именем usp_ProceduresVersion. Эта хранимая процедура используется для резервного копирования хранимых процедур, которые необходимо скопировать в таблицу данных, созданную выше.
Среди них в основном доступны системные таблицы sysobjects и syscomments:
(1) системная таблица sysobjects
Содержит одну строку для каждого объекта (ограничение, значение по умолчанию, журнал, правило, хранимую процедуру и т. д.), созданного в базе данных. Только в базе данных tempdb эта таблица включает строку для каждого временного объекта.
(2) системная таблица системных комментариев
Содержит записи для каждого представления, правила, значения по умолчанию, триггера, ограничения CHECK, ограничения DEFAULT и хранимой процедуры. Текстовый столбец содержит исходные операторы определения SQL, максимальный размер которых ограничен 4 МБ. Эта таблица хранится в каждой базе данных. .
(3) исходный сценарий хранимой процедуры.
/*
Имя: usp_ProceduresVersion
Описание: Резервное копирование пользовательских хранимых процедур
Автор: Rickie
Журнал изменений: НЕТ
Описание Дата изменения Кем
была создана процедура: 27 августа 2004 г. Рики
*/
СОЗДАТЬ ПРОЦЕДУРУ usp_ProceduresVersion @DatabaseName NVARCHAR(50)
AS
SET NOCOUNT ON
--Это будет содержать динамическую строку
DECLARE @strSQL NVARCHAR(4000)
.
--Установить строку
--Только хранимые процедуры
SET @strSQL = 'INSERT INTO master.dbo.StoredProceduresBackup(
DatabaseName,ProcedureName,ProcedureText )
SELECT ''' + @DatabaseName + ''', so.name, sc.text
FROM ' + @DatabaseName + '.dbo.sysobjects so
INNER JOIN ' + @DatabaseName + '.dbo.syscomments sc
ON so.id = sc.id
WHERE so.type = ''p''' + ' и so.status>0
Заказать по so.id '
--Выполнить строку
EXEC dbo.sp_executesql @strSQL
GO
3. Создайте задание и выполните указанную выше хранимую процедуру
, чтобы создать задание на SQL Server, и настройте план выполнения так, чтобы хранимые процедуры указанной базы данных могли автоматически создавать резервные копии в приведенной выше таблице данных.
ОК. Вот и все. Если у вас возникнут вопросы, свяжитесь со мной по адресу [email protected] . Удачи.