[SQL] リストア

  バックアップファイルの情報取得



  
RESTORE
	FILELISTONLY 
	FROM デバイス名
WITH
	FILE = ファイル番号
  

  
RESTORE	FILELISTONLY FROM MyBackup WITH FILE = 1
  

LogicalNamePhysicalNameTypeFileGroupNameSizeMaxSize
lightboxC:\MSSQL7\data\lightbox.mdfDPRIMARY104857635184372080640
lightbox_logC:\MSSQL7\data\lightbox_log.LDFL78643235184372080640

デバイス名を使用しない場合は以下の書式となります

  
RESTORE
	FILELISTONLY 
	FROM DISK = 'フルパス'
WITH
	FILE = ファイル番号
  

  
RESTORE FILELISTONLY FROM DISK = 'c:\temp\MyBackup.dat' WITH FILE = 1
  

バックアップデバイス内のファイル数を確認したい場合は以下です

  
RESTORE HEADERONLY FROM DISK = 'c:\temp\MyBackup.dat'
  



  バックアップしたデーターベースを元に複製データベースを作成する



一時的な処理として行なうので、デバイスを使用せずにバックアップします
( パックアップ後のファイルが新規になるように事前に削除します )
  
master.dbo.xp_cmdshell 'del c:\MSDE2000\Backup\MyDB2.dat'
  

  
BACKUP DATABASE MyDB2 TO DISK = 'c:\MSDE2000\Backup\MyDB2.dat'
  

バックアップしたファイルの内容を確認

  
RESTORE FILELISTONLY FROM DISK = 'c:\MSDE2000\Backup\MyDB2.dat'
  

LogicalNamePhysicalNameTypeFileGroupNameSizeMaxSize
MyDB2C:\MSDE2000\Data\mydb2.mdfDPRIMARY203161635184372080640
MyDB2_logC:\MSDE2000\Data\mydb2_log.ldfL235929635184372080640

リストアを物理ファイル名を変更して行います

  
RESTORE DATABASE MyDB 
	FROM DISK = 'c:\MSDE2000\Backup\MyDB2.dat'
WITH
	MOVE 'MyDB2' TO 'C:\MSDE2000\Data\mydb.mdf',
	MOVE 'MyDB2_log' TO 'C:\MSDE2000\Data\mydb_log.ldf'
  
MyDB2 よりリストアしたので、MyDB の物理ファイルの論理名が
MyDB2 のままなので変更します
( MyDB へ接続して sp_helpfile で確認 )

  
ALTER DATABASE MyDB 
MODIFY FILE(NAME = MyDB2, NEWNAME = MyDB)

2回に分けて実行する必要があります

ALTER DATABASE MyDB 
MODIFY FILE(NAME = MyDB2_log, NEWNAME = MyDB_log)
  



  バックアップしたデータから現在のデータベースを置き換える

  
RESTORE DATABASE データベース名
	FROM デバイス名
WITH
	FILE = ファイル番号,
	REPLACE
  

当然ですが、データーベースが使用中の場合はエラーとなります
また、REPLACE を付けずに既存のデータベースを置き換えようとするとエラーとなります

※ REPLACE を使用して MOVE オプションを絶対に使用しないで下さい










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ