サーバーのバックアップ間でSQL Serverデータベース

オリジナルます。https://www.cnblogs.com/jaday/p/6088200.html

需要はじめに:公式データベース毎日オンラインバックアップとは、サーバが自動的に復元するデータベースのバックアップファイルをテストし、テストサーバーにバックアップファイルをコピーします。

プログラムの説明:

ステップ1:正式なライブラリにストアドプロシージャを作成するには、データベースをバックアップするために使用され、テストサーバーにコピーされ、その後、新しい仕事を毎日作成したストアドプロシージャを実行するタイミング。

ステップ2:その後、毎日作成されたストアドプロシージャのジョブの実行タイミングを作成し、データベースを復元するために、テスト用データベースサーバー上のストアドプロシージャを作成します。

準備:

ファイル共有、バックアップの公式サーバフォルダ上のファイルとフォルダに、すべての人の権利。

みんなのフォルダに共有テストサーバー上のフォルダ、およびファイルのアクセス権を作成します。

 

公式のデータベースのバックアップとデータベースのコードを複製します:

コードをコピー
-开启xp_cmdshellを
ます。sp_configure '高度な表示オプション'、1つの
再構成
行く
sp_configureを1つの'のxp_cmdshell' 
再構成が
行きます
コードをコピー

 

コードをコピー
使用[マスター] 
GO 
/ ******オブジェクト:。のStoredProcedure [DBO] [backup_db_ksedu]スクリプト日:2016年11月22日八時41分23秒****** / 
SETは、ON ANSI_NULLS 
GO 
ON SET QUOTED_IDENTIFIER 
GO 

-备份数据库
。PROCを作成[DBO] [backup_db_ksedu] 

として   

宣言@strPswのVARCHAR(50)

@strUsr VARCHAR(50)を宣言

@strCmdShellのVARCHARを宣言(300)

宣言@strDataBaseNameのVARCHAR(20)

宣言@FullFileName VARCHAR(200)

宣言@ FullFileName1 VARCHAR(200)

FullFileName2 varchar型@(200)を宣言

@FileFlagのVARCHAR(50)を宣言

する@ FileFlag2のVARCHARを宣言(50)

DECLAREする@ FileFlag3のVARCHAR(50)

@ToFileNameのVARCHARを宣言し(200)  

@SQLStr VARCHARのDECLAREは(500)

SQLStr2 VARCHAR(500)@ DECLARE    

SQLStr3 VARCHAR(500)@ DECLARE     

@FlagDel VARCHAR(20)を宣言

バックアップ定義されたデータベース名- 

設定する@ strDataBaseName = 'データベース名' 

ローカルバックアップファイルの定義を-名前

@ + =セット@ FileFlag strDataBaseName 'が_db_' +置き換え(変換(CHAR(20)と、GETDATE()、112)、 ''、 '')

-前日のローカルバックアップファイル名を定義する

--set @ FileFlag3 strDataBaseName @ + = '_db_' +交換してください((CHAR(20)で変換し、GETDATE() - 1112)、 ''、 '')

-リモートバックアップファイルサーバー名が前に3日間で定義

--set @ FileFlag2 = @ strDataBaseName + '_db_' +置き換える(GETDATE()、(CHAR(20)のために変換する- ' '''、3112))

-ログインするために、リモートサーバーのドメインとユーザー名を設定

strUsr = 'ZONGHEGUANLI-SQ \管理者@セットを

- -リモートサーバのログインパスワードの設定

設定@ strPsw =」をABC123 " 

-リモート接続サーバをセットアップ

@ StrCmdShell = SET 'NET xx.xxx.x.xxx使用\\ \ db_backupための' @strPsw + + '/ユーザー:' @ + strUsr 

-ローカル・バックアップ・セットのファイル名

を設定@ FullFileName = 'E:\ BAK \' + + @FileFlag「BAK」

-ローカルバックアップファイル名の前の日に設定

--set @ FullFileName1 = 『D:\ \バックアップ』 + @ FileFlag3 +「BAKは、」

- 3日前に、リモートサーバのバックアップファイル名を設定します

- @ FullFileName2 = -set '\\ 172.17.1.10 \ J $ \のdb_backup \' + @ + FileFlag2 'BAK。' 

-バックアップファイルディレクトリ保存するために、リモート・サーバを設定

@ToFileName =「\\ xx.xxx.x.xxx \ db_backupを設定します\「

--set @ ToFileName =」E:\バックアップ\「

- Trueに設定すると、バックアップが削除され、バックアップファイルを削除しない、Falseに設定され

た「偽--set @ FlagDel =」

-現地からの設定リモートサーバの文にバックアップファイルをコピー

セット@ sqlstr =「コピー」+ @ FullFileName +「」+ @ ToFileName 

-前日のファイルを削除するように設定されたローカル・バックアップ

--set @ SQLStr2 =「デル」@ FullFileName1 + 

- 3日前にバックアップファイルを削除するには、リモートサーバーを設定します

= @ SQLStr3 --set 'デル' + @ FullFileName2 

-圧縮されたバックアップデータベースのバックアップ

のBACKUP DATABASE TO DISK = @FullFileName WITHはINITを@strDataBaseName、STATS = 20である   

-リモートサーバに接続

@strCmdShellをmaster..xp_cmdshell Execの

-コピーバックアップファイルリモートサーバへの

Execの@SQLStrをmaster..xp_cmdshell    

-ローカルバックアップファイルの前に1日に削除

--IF(@FlagDel =「TRUE」)

--execマスター.. SQLStr2 @ xp_cmdshellを

---- 3日間のリモートサーバーの前に削除しますバックアップファイル

--IF(@FlagDel = 'TRUE')

xp_cmdshellをマスター--exec .. @ SQLStr3
コードをコピー

 

テスト・データベースは、データベースのコードを復元します:

コードをコピー
USE [マスター] 
GO 
/ ******オブジェクト:のStoredProcedure [DBO] [restore_db_ksedu]スクリプト日:. 2016年11月22日8時40分12秒****** / 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIERをON 
GO 


PROCEDURE ALTER [DBO] [restore_db_ksedu]。
AS 

宣言@strDataBaseName VARCHAR(50)
@FileFlag VARCHARを宣言(50)

-バックアップデータベース名定義された
設定します@ strDataBaseName = 'データベース名' 

に設定@ FileFlag =は'D:\ db_backupする\' strDataBaseName @ + + '_db_' +交換してください((CHAR(20)で変換し、GETDATE()、112)、 ''、 '')+ 'BAK' 

-プラスフレーズデータベースが正常に実行さの原因を防止するために使用される
ALTERをデータベース[データベース名] SET OFFLINEとROLLBACK IMMEDIATEが

データベース[データベース名]を復元し
、ファイル= 1とディスク= @ FileFlagから
REPLACE、
回復  

ALTERデータベース[データベース名]オンライン設定  
コードをコピー

ジョブ計画を作成するには:リファレンスhttp://wenku.baidu.com/link?url=HLojwfVr1gkEuKjhk3Twsy7SxTWNMxovLg4LXpqvg_a3r50XQE5hZt8e03uPhbW8qUNjEx0IKa39DjyJ0spuNN1TV42UCIAMNDUQllhjsZu

 

 

おすすめ

転載: www.cnblogs.com/zhang1f/p/11409225.html