strTargetFile1、strTargetFile2 は環境によって変化します。 strTarget にコピー先の DB の名前を指定します。 拡張子:txtvbswsfjsphpjavahtmlutf8sjis Set Cn = CreateObject( "ADODB.Connection" ) strServer = "sv5963\msde2000" strDatabase = "MyDB" strUser = "sa" strPass = "password" strTarget = "MyDB2" strTargetFile1 = "C:\mssql2000\MSSQL$MSDE2000\Data\" & strTarget & ".mdf" strTargetFile2 = "C:\mssql2000\MSSQL$MSDE2000\Data\" & strTarget & "_log.LDF" ' ******************************************************** ' バックアップファイル ' ******************************************************** strPath = "C:\Temp\backup_001.dat" ConnectionString = _ "Provider=SQLOLEDB;" & _ "Data Source=" & strServer & ";" & _ "Initial Catalog=" & strDatabase & ";" & _ "User ID=" & strUser & ";" & _ "Password=" & strPass & ";" Cn.ConnectionTimeout = 0 Cn.CommandTimeout = 0 Cn.Open ConnectionString ' ******************************************************** ' バックアップファイル削除 ' ******************************************************** Query = "master.dbo.xp_cmdshell 'del " & strPath & "'" on error resume next Cn.Execute Query on error goto 0 ' ******************************************************** ' バックアップ( 外部ファイル直接指定 ) ' ******************************************************** Query = "BACKUP DATABASE " & strDatabase & " TO DISK = '" & strPath & "'" Cn.Execute Query ' ******************************************************** ' バックアップファイル内の論理ファイル名を使用して、 ' 新しい DB を自動的に作成させる為にいったん削除 ' ******************************************************** Query = "DROP DATABASE " & strTarget on error resume next Cn.Execute Query on error goto 0 ' ******************************************************** ' リストア ' ******************************************************** Query = "RESTORE DATABASE " & strTarget Query = Query & " FROM DISK = '" & strPath & "'" Query = Query & " WITH" Query = Query & " MOVE '" & strDatabase & "' TO '" & strTargetFile1 & "'," Query = Query & " MOVE '" & strDatabase & "_log' TO '" & strTargetFile2 & "'" Cn.Execute Query ' ******************************************************** ' DB単位で、論理ファイル名が物理ファイルに存在する。 ' RESTORE 時に、前の DB の論理ファイル名が引き継がれる ' ので変更 ' ******************************************************** Query = "ALTER DATABASE " & strTarget Query = Query & " MODIFY FILE(NAME = " & strDatabase & ", NEWNAME = " & strTarget & ")" Cn.Execute Query Query = "ALTER DATABASE " & strTarget Query = Query & " MODIFY FILE(NAME = " & strDatabase & "_log, NEWNAME = " & strTarget & "_log)" Cn.Execute Query ' ******************************************************** ' バックアップファイル削除 ' ******************************************************** Query = "master.dbo.xp_cmdshell 'del " & strPath & "'" on error resume next Cn.Execute Query on error goto 0 Cn.Close MsgBox("処理が終了しました ")
Set Cn = CreateObject( "ADODB.Connection" ) strServer = "sv5963\msde2000" strDatabase = "MyDB" strUser = "sa" strPass = "password" strTarget = "MyDB2" strTargetFile1 = "C:\mssql2000\MSSQL$MSDE2000\Data\" & strTarget & ".mdf" strTargetFile2 = "C:\mssql2000\MSSQL$MSDE2000\Data\" & strTarget & "_log.LDF" ' ******************************************************** ' バックアップファイル ' ******************************************************** strPath = "C:\Temp\backup_001.dat" ConnectionString = _ "Provider=SQLOLEDB;" & _ "Data Source=" & strServer & ";" & _ "Initial Catalog=" & strDatabase & ";" & _ "User ID=" & strUser & ";" & _ "Password=" & strPass & ";" Cn.ConnectionTimeout = 0 Cn.CommandTimeout = 0 Cn.Open ConnectionString ' ******************************************************** ' バックアップファイル削除 ' ******************************************************** Query = "master.dbo.xp_cmdshell 'del " & strPath & "'" on error resume next Cn.Execute Query on error goto 0 ' ******************************************************** ' バックアップ( 外部ファイル直接指定 ) ' ******************************************************** Query = "BACKUP DATABASE " & strDatabase & " TO DISK = '" & strPath & "'" Cn.Execute Query ' ******************************************************** ' バックアップファイル内の論理ファイル名を使用して、 ' 新しい DB を自動的に作成させる為にいったん削除 ' ******************************************************** Query = "DROP DATABASE " & strTarget on error resume next Cn.Execute Query on error goto 0 ' ******************************************************** ' リストア ' ******************************************************** Query = "RESTORE DATABASE " & strTarget Query = Query & " FROM DISK = '" & strPath & "'" Query = Query & " WITH" Query = Query & " MOVE '" & strDatabase & "' TO '" & strTargetFile1 & "'," Query = Query & " MOVE '" & strDatabase & "_log' TO '" & strTargetFile2 & "'" Cn.Execute Query ' ******************************************************** ' DB単位で、論理ファイル名が物理ファイルに存在する。 ' RESTORE 時に、前の DB の論理ファイル名が引き継がれる ' ので変更 ' ******************************************************** Query = "ALTER DATABASE " & strTarget Query = Query & " MODIFY FILE(NAME = " & strDatabase & ", NEWNAME = " & strTarget & ")" Cn.Execute Query Query = "ALTER DATABASE " & strTarget Query = Query & " MODIFY FILE(NAME = " & strDatabase & "_log, NEWNAME = " & strTarget & "_log)" Cn.Execute Query ' ******************************************************** ' バックアップファイル削除 ' ******************************************************** Query = "master.dbo.xp_cmdshell 'del " & strPath & "'" on error resume next Cn.Execute Query on error goto 0 Cn.Close MsgBox("処理が終了しました ")