自动备份用户创建的Stored Procedures
【IT168技术文档】
为了避免意外丢失/损坏辛苦创建的Stored Procedures,或者想恢复到以前版本的Stored Procedures,这样提供了一个有效方法,可以自动将指定数据库中的Stored Procedures进行备份。
1. 在特定的数据库(建议为SQL Server的master数据库)上创建数据表StoredProceduresBackup,用来保存备份的Stored Procedures。
IF OBJECT_ID('StoredProceduresBackup') IS NOT NULL DROP TABLE StoredProceduresBackup 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. 创建Stored Procedure名为usp_ProceduresVersion,该Stored Procedure用来将需要备份Stored Procedures的备份到上述创建的数据表中。
其中主要访问sysobjects和syscomments系统表,看下面代码所示:
/* Name: usp_ProceduresVersion Description: Back up user defined stored-procedures Author: Rickie Modification Log: NO Description Date Changed By Created procedure 8/27/2004 Rickie */ CREATE PROCEDURE usp_ProceduresVersion @DatabaseName NVARCHAR(50) AS SET NOCOUNT ON --This will hold the dynamic string. DECLARE @strSQL NVARCHAR(4000) --Set the string --Only stored procedures 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 Order By so.id ' --Execute the string EXEC dbo.sp_executesql @strSQL GO
3. 创建Job执行上述Stored Procedure
在SQL Server上创建Job,并设定运行计划,这样指定数据库的Stored Procedures就可以自动备份到上述数据表中。
0
相关文章