[PowerShell] : SQL Server 2008 でバックアップを取る方法(Agent版あり)

by けろ-みお 11. 5月 2009 02:18

 

実は、SQL Server 2008 のバックアップもPowerShellで簡単に実行することができます。

こんな、バックアップスクリプトをSQLで作っておき、それをInvoke-SqlCmd で、ファイル名を指定して実行するだけ。

SQLスクリプト

DECLARE @backupSetId as int 
 
DECLARE @now as nvarchar(10)
DECLARE @backupfile nvarchar(max)
SELECT 	@now = CONVERT(varchar, getdate(), 112), 
@backupfile = N'D:\backup\SampleDb_' + @now + '.bak'
BACKUP DATABASE [SampleDb] TO  DISK = @backupfile 
WITH NOFORMAT, 
INIT,  
NAME = N'SampleDb-完全 データベース バックアップ', 
SKIP, 
NOREWIND, 
NOUNLOAD,  
STATS = 10
SELECT 	@backupSetId = position 
FROM 
msdb..backupset 
WHERE 
database_name = N'SampleDb' 
AND 	backup_set_id = (select max(backup_set_id) from msdb..backupset where database_name=N'SampleDb' )
IF @backupSetId is null 
BEGIN 
raiserror(N'確認に失敗しました。データベース ''SampleDb'' のバックアップ情報が見つかりません。', 16, 1) 
END
RESTORE VERIFYONLY FROM  DISK = @backupfile WITH  FILE = @backupSetId, NOUNLOAD,  NOREWIND
 
 

 

上記バックアップスクリプト実行するPowerShellのコマンドライン

 # Invoke-SqlCmd -InputFile 'バックアップ用SQLスクリプト'
Invoke-SqlCmd -InputFile 'D:\backup\SampleDb_Backup.sql'

たった、これだけなんですが、1つだけ注意点!

それは、Invoke-SqlCmd コマンドをSQL Server Agent で動かす時、このままだとエラーになります。

ちなみに、SQL Server Agent で、PowerShellを動かしたい場合は、下記で行けます。

 

手順1:Management Studio で、[管理]→[SQL Server Agent] を選択する

手順2:新規ジョブを作成し、下記のように設定する

 

手順3:ジョブを作成する際、[種類]にPowerShellを選択し、コマンド欄には、下記のように入力します。(SQL Server 認証の例)

  
# ユーザIDとパスワードを指定する
#(コマンドライン実行と違い、SQL Server Agentは接続情報をもっていないため)
Invoke-SqlCmd -InputFile 'D:\backup\SampleDb_Backup.sql' 
-ServerInstance "サーバ名\SQL Serverのインスタンス名" -U ユーザID -P パスワード 

 

手順4:後は、ジョブに対するエラー発生時の対処方法などを設定すればOKです。

手順5:作成したジョブを右クリックし、[ステップでジョブを開始] します。

     成功メッセージが返ってきて、所定のフォルダにDBバックアップファイルが無事格納されていればOKです。

 

ただ、もう1つわからないことがあります。(T-SQL を私が忘れているだけかもしれませんが)

それは、Invoke-SqlCmd コマンドって、SQL Server でいう、EXEC(正式名はEXECUTE) ですよね?

ストアド実行時に関しては戻り値がとれるんで、OKなんですが、SQLスクリプトファイルで実行したものって

戻り値とれないんでしたっけ?

もし、それができれば、Invoke-SqlCmd でスクリプトファイルをSQL Server Agent で実行しても、

きちんとした戻り値処理ができるんですけどね・・・ うーん、知っている方、教えてください。

現在のレート 3.0 (1人)

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SQL Server

コメント

コメントを書く


 

  Country flag

biuquoteredbluegreenyellowPowerShellTextFile
  • コメント
  • プレビュー
Loading



Calendar

<<  3月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010 PowerShell from Japan!!