ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

プログラマたまごくらぶコミュの【SQLServer2000(2005)】DTS・JOBの一括保存スクリプトについて

  • mixiチェック
  • このエントリーをはてなブックマークに追加
SQLServer2000 または 2005に登録してあるDTSとJOBを保存していくスクリプトを作成しました。

しかし、DTS・JOBともに画面から右クリック→保存としたときのファイルと同一のもになりません。

DTSはバイナリ比較・JOBはテキスト比較し、差があったのです。

DTSについては保存できたものが正しいものと証明されればそれでいいのですが、JOBに関しては大文字が小文字になってるとようです。

出力結果が同じにはならないのでしょうか。

DTSScript.vbs
'--------------------------------------------------------------------------------
' DTS一括保存スクリプト
' 最終更新 20006/12/14
' Copyright (C) 2006 闇月,All rights reserved.
'
'使用方法: スクリプトをDTSの保存したいフォルダに置き、下記の設定項目を
' 設定し、保存。実行するだけです。
' 実行後、このスクリプトのあるフォルダに"DTS"というフォルダが
' 作成され、その中にBackUpと実行した日付のフォルダが作成されており
' その中にDTSストレージファイルが保存されます。
'--------------------------------------------------------------------------------

'設定項目
TargetServer = "[インスタンス名指定]"
UserID = "[ユーザーID]"
Password = "[パスワード]"


'処理開始
Dim FileSysObj, CurrentDir, TargetDir, SaveDir
Set FileSysObj = CreateObject("Scripting.FileSystemObject")
Set CurrentDir = FileSysObj.GetFolder(".")

'カレントディレクトリの"DTS"フォルダに"Backup(日付)"のフォルダを作成しDTSを保存する
TargetDir = CurrentDir & "\DTS\"
SaveDir = TargetDir & "BackUp" & Year(Date) & Month(Date) & Day(Date) & "\"

'DTSフォルダの有無を確認し、ない場合は作成する
If Not FileSysObj.FolderExists( TargetDir ) Then
FileSysObj.CreateFolder( TargetDir )
End If

'バックアップフォルダの有無を確認し、ない場合は作成する
If Not FileSysObj.FolderExists( SaveDir ) Then
FileSysObj.CreateFolder( SaveDir )
End If


'対象SQLServerに保存されているDTSのパッケージ名を読み込む
Dim Connection, Recordset, Package(255)
Set Connection = CreateObject("ADODB.Connection")
Connection.Open ( "Provider=SQLOLEDB;Data Source=" & TargetServer & ";Password=" & Password & ";User ID=" & UserID & ";Initial Catalog=master" )

Set Recordset = Connection.Execute( "EXEC msdb..sp_enum_dtspackages" )

i=0
Do Until Recordset.EOF
Package(i) = Recordset.Fields(0).value
i = i + 1
Recordset.MoveNext
Loop

Recordset.Close


'DTSを保存する
Dim DtsPackage
For Each PackageName In Package
If PackageName <> "" Then
PackageID = FileSysObj.GetBaseName(PackageName)
Set DtsPackage = CreateObject("DTS.Package2")
DtsPackage.LoadFromSQLServer TargetServer,UserID,Password,DTSSQLStgFlag_Default,,,,PackageID
DtsPackage.SaveToStorageFile SaveDir & PackageName
End If
Next

MSGBOX "DTSの保存が終わりました。"



JOBScript.vbs
'--------------------------------------------------------------------------------
' JOB一括保存スクリプト
' 最終更新 20006/12/14
' Copyright (C) 2006 闇月,All rights reserved.
'
'使用方法: スクリプトをJOBの保存したいフォルダに置き、下記の設定項目を
' 設定し、保存。実行するだけです。
' 実行後、このスクリプトのあるフォルダに"JOB"というフォルダが
' 作成され、その中にBackUpと実行した日付のフォルダが作成されており
' その中にJOBのSQLファイルが保存されます。
'--------------------------------------------------------------------------------

'設定項目
TargetServer = "[インスタンス名]"


'処理開始
Dim FileSysObj, CurrentDir, TargetDir, SaveDir
Set FileSysObj = CreateObject("Scripting.FileSystemObject")
Set CurrentDir = FileSysObj.GetFolder(".")

'カレントディレクトリの"JOB"フォルダに"Backup(日付)"のフォルダを作成しDTSを保存する
TargetDir = CurrentDir & "\JOB\"
SaveDir = TargetDir & "BackUp" & Year(Date) & Month(Date) & Day(Date)

'JOBフォルダの有無を確認し、ない場合は作成する
If Not FileSysObj.FolderExists( TargetDir ) Then
FileSysObj.CreateFolder( TargetDir )
End If

'バックアップフォルダの有無を確認し、ない場合は作成する
If Not FileSysObj.FolderExists( SaveDir ) Then
FileSysObj.CreateFolder( SaveDir )
End If

'定数の宣言
Const SQLDMOScript_Default = 4
Const SQLDMOScript_AppendToFile = 256
Const SQLDMOScript2_AgentAlertJob = 2048
Const SQLDMOScript2_AgentNotify = 1024

'対象SQLServerに保存されているJOBを読み込む
Dim JobObj
Set JobObj = CreateObject("SQLDMO.SQLServer")
JobObj.LoginSecure = True
JobObj.Connect TargetServer

'JOBを1つずつ保存
for i=1 to JobObj.JobServer.Jobs.Count
JobName = JobObj.JobServer.Jobs.Item(i).name
FileName = SaveDir & "\" & JobName & ".sql"
JobObj.JobServer.Jobs.Item(i).Script SQLDMOScript_Default, FileName
next

'オペレータ・JOB・警告を下記のファイル名で一括保存
'FileName = SaveDir & "JOB.sql"
'JobObj.JobServer.Operators.Script SQLDMOScript_Default, FileName
'JobObj.JobServer.Jobs.Script SQLDMOScript_Default Or SQLDMOScript_AppendToFile, FileName
'JobObj.JobServer.Alerts.Script SQLDMOScript_Default Or SQLDMOScript_AppendToFile, FileName, SQLDMOScript2_AgentAlertJob Or SQLDMOScript2_AgentNotify

MSGBOX "JOBの保存が終わりました。"

コメント(0)

mixiユーザー
ログインしてコメントしよう!

プログラマたまごくらぶ 更新情報

プログラマたまごくらぶのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング