せっかく作成したストアド プロシージャを誤って紛失したり破損したりすることを避けるため、またはストアド プロシージャを以前のバージョンに復元したい場合、これは指定した場所にストアド プロシージャを自動的にバックアップする効果的な方法を提供します。データベース。
1. 特定のデータベース (SQL Server のマスター データベースであることを推奨) にデータ テーブル StoredProceduresBackup を作成し、バックアップ ストアド プロシージャを保存します。
OBJECT_ID('StoredProceduresBackup') が NULL でない場合
DROP TABLE ストアドプロシージャバックアップ
GO
CREATE TABLE StoredProceduresBackup
(
AutoID INTEGER IDENTITY(1,1) PRIMARY KEY、
InsertDate DATETIME DEFAULT GETDATE()、
DatabaseName VARCHAR(50)、
ProcedureName VARCHAR(50)、
ProcedureText VARCHAR(4000)
)
GO
2. usp_ProceduresVersion という名前のストアド プロシージャを作成します。このストアド プロシージャは、上で作成したデータ テーブルにバックアップする必要があるストアド プロシージャをバックアップするために使用されます。
このうち、sysobjects および syscomments システム テーブルが主にアクセスされます。
(1) sysobjects システム テーブル
データベース内に作成されたオブジェクト (制約、デフォルト、ログ、ルール、ストアド プロシージャなど) ごとに 1 行が含まれます。tempdb の場合のみ、このテーブルには一時オブジェクトごとに 1 行が含まれます。
(2) syscomments システムテーブル
各ビュー、ルール、デフォルト、トリガー、CHECK 制約、DEFAULT 制約、およびストアド プロシージャのエントリが含まれます。テキスト列には、最大サイズが 4 MB に制限されている元の SQL 定義ステートメントが含まれます。 。
(3)ストアドプロシージャのソーススクリプト。
/*
名前: usp_ProceduresVersion
説明: ユーザー定義ストアド プロシージャをバックアップする
作成者: Rickie
変更ログ: いいえ
説明 変更日
作成者 プロシージャ 2004/8/27 Rickie
*/
CREATE PROCEDURE 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''' + ' and so.status>0
so.id で注文 '
-- 文字列
EXEC dbo.sp_executesql @strSQL
GO
を実行します。
3. ジョブを作成し、上記のストアド プロシージャを実行して
SQL Server 上にジョブを作成し、指定したデータベースのストアド プロシージャが上記のデータ テーブルに自動的にバックアップされるように実行計画を設定します。
以上です。 ご質問がございましたら、 [email protected]までご連絡ください。