93

運用 Web サイトには SQL Server 2008 R2 Standard (バージョン 10.50.1600.1) を使用し、データベースとしてローカルホストには Advanced Services (v10.50.1600.1) を含む SQL Server Express エディションを使用しています。

数日前、SQL Server がクラッシュしたため、新しい 2008 R2 Express バージョンをローカルホストにインストールする必要がありました。Express エディションから取得したいくつかの古いバージョンを復元したときは正常に機能しましたが、.bak運用サーバーから取得したファイルからデータベースを復元しようとすると、次のエラーが発生します。

エラー: 指定されたキャストは無効です。(SqlManagerUI)

コマンドを使用してデータベースを復元しようとすると

Use Master
Go
RESTORE DATABASE Publications
FROM DISK = 'C:\Publications.bak'
WITH MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
MOVE 'AlPublications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'

別のエラーを生成します

メッセージ 3154、レベル 16、状態 4、行 1
バックアップ セットには、既存の「出版物」データベース以外のデータベースのバックアップが保持されています。
メッセージ 3013、レベル 16、状態 1、行 1
RESTORE DATABASE が異常終了しています。

バージョンをクロスチェックしました。下の画像に示すように、それらはすべて私には一致しているように見えます

以前は、標準バージョンからエクスプレス エディションにデータベースを復元できましたが、現在は失敗しています。データベースを削除して、再作成しようとしました。それも失敗します。

何が間違っているのかわかりません。これに関して助けていただければ幸いです

.bak ファイルが破損していたようで、問題は解決しました。別のファイルで試したところ、うまくいきました。

4

4 に答える 4

40

GUI は気まぐれな場合があります。T-SQL の使用時に発生したエラーは、既存のデータベースを上書きしようとしているが、既存のデータベースを上書き/置換するように指定していないためです。以下はうまくいくかもしれません:

Use Master
Go
RESTORE DATABASE Publications
  FROM DISK = 'C:\Publications_backup_2012_10_15_010004_5648316.bak'
  WITH 
    MOVE 'Publications' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.mdf',--adjust path
    MOVE 'Publications_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS2008R2\MSSQL\DATA\Publications.ldf'
, REPLACE -- Add REPLACE to specify the existing database which should be overwritten.
于 2012-11-28T12:20:34.097 に答える