열심히 생성한 저장 프로시저를 실수로 유실/손상시키는 것을 방지하기 위해 또는 이전 버전의 저장 프로시저로 복원하려는 경우 지정된 위치에 저장 프로시저를 자동으로 백업하는 효과적인 방법을 제공합니다. 데이터 베이스.
1. 특정 데이터베이스(SQL Server의 마스터 데이터베이스 권장)에 StoredProceduresBackup 데이터 테이블을 생성하여 백업 저장 프로시저를 저장합니다.
IF OBJECT_ID('StoredProceduresBackup')가 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. usp_ProceduresVersion이라는 저장 프로시저를 생성합니다. 이 저장 프로시저는 위에서 생성한 데이터 테이블에 백업해야 하는 저장 프로시저를 백업하는 데 사용됩니다.
그중 sysobjects 및 syscomments 시스템 테이블에 주로 액세스됩니다.
(1) sysobjects 시스템 테이블
데이터베이스 내에 생성된 각 개체(제약 조건, 기본값, 로그, 규칙, 저장 프로시저 등)에 대해 하나의 행을 포함합니다. tempdb에서만 이 테이블에는 각 임시 개체에 대한 행이 포함됩니다.
(2) syscomments 시스템 테이블
각 보기, 규칙, 기본값, 트리거, CHECK 제약 조건, DEFAULT 제약 조건 및 저장 프로시저에 대한 항목을 포함합니다. 텍스트 열에는 최대 크기가 4MB로 제한되는 원본 SQL 정의 문이 포함됩니다. .
(3) 저장 프로시저의 소스 스크립트.
/*
이름: usp_ProceduresVersion
설명: 사용자 정의 저장 프로시저 백업
작성자: Rickie
수정 로그: NO
설명 날짜 변경자
생성 프로시저 2004년 8월 27일 Rickie
*/
프로시저 생성 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. Job을 생성하고 위의 Stored Procedure를 실행하여
SQL Server에서 Job을 생성하고, 지정된 데이터베이스의 Stored Procedure가 위의 데이터 테이블에 자동으로 백업될 수 있도록 실행 계획을 설정합니다.
알았어. 그게 다야. 질문이 있으시면 [email protected] 으로 연락주세요. 행운을 빕니다.