1. ホーム
  2. sql-server

[解決済み】SQL Server データベース復元エラー:指定されたキャストは有効ではありません。(SqlManagerUI)

2022-01-24 11:15:19

質問

SQL Server 2008 R2 Standard (バージョン 10.50.1600.1) を本番サイトで使用しています。 SQL Server Express Edition with Advanced Services (v10.50.1600.1) は、データベースとして私のローカルホストに使用します。

数日前に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'

別のエラーが発生します

Msg 3154, Level 16, State 4, Line 1
バックアップセットは、既存の'Publications'データベース以外のデータベースのバックアップを保持しています。
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE が異常終了しました。

バージョンを照合してみました。以下の画像のように、私にはすべて一致しているように見えます。

以前は通常版からエクスプレス版へデータベースを復元できたのですが、現在は失敗しています。データベースを削除し、再作成を試みました。これも失敗しました。

何が間違っているのかよくわかりません。この点に関して、ご助力をお願いします。

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

解決方法は?

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.