貼るだけでグレードアップ。LDF ファイルがない場合 (なぜ LDF ファイルがないのですか?)、以下を使用する必要があります。
CREATE DATABASE [DatabaseName] ON
(FILENAME = N'Drive:\path\file.mdf')
FOR ATTACH_REBUILD_LOG;
もちろん注意点はありますが…
- あなたが持っているのは .mdf ファイルだけなので、失礼な目覚めになる可能性があります。ファイルが SQL Server から完全に切り離されていない場合、再接続できない可能性があり、ソース サーバーに戻って適切なバックアップ (.mdf ファイルではない) を取得する必要があります。これはすべて、アップグレードしようとしている .mdf ファイルを入手した場所によって異なります。.mdf ファイルがきれいに分離されていない場合、次のエラーが発生することがあります。
ファイルのアクティブ化に失敗しました。物理ファイル名「..._log.LDF」が間違っている可能性があります。
データベースが正常にシャットダウンされていないため、ログを再構築できません。
メッセージ 1813、レベル 16、状態 2、行 1
新しいデータベース 'DatabaseName' を開けませんでした。CREATE DATABASE は中止されます。
- データベースが 80 互換モードの場合、90 にアップグレードされます。これは、
*=
/ =*
join 構文など、一部の作業コードが突然壊れる可能性があることを意味する場合があります。
- データベースが 10GB を超えていて、Express にアタッチしようとすると (おそらく LocalDB は試したことがない)、アタッチは失敗します (または、アタッチは成功するが、最初の自動拡張で失敗する可能性がありますか? これもテストしていません)。
- データベースが 2008 Enterprise / Developer で作成され、そこでのみ利用可能な機能を使用し、データベースを Standard または Express エディションに接続した場合にも問題が発生します...
- OK、エラーメッセージから、2008年のデータベースではなく、2000年のデータベースを接続しようとしています. これを SQL Server 2012 に直接アタッチすることはできません。最初に SQL Server 2005、2008、または 2008 R2 の任意のインスタンスにアタッチしてそのバージョンにアップグレードしてから、バックアップして SQL Server 2012 に復元する必要があります。
FWIW、あるインスタンスから別のインスタンスにデータベースを移動するためのはるかに安全な方法はBACKUP
/を使用RESTORE
することです (理由は、バックアップが失敗した場合でも、データベースのコピーが残っているためです。データベースを切り離して何かが起こった場合)間違っています。コピーがありません)。ただし、このより安全なアプローチを使用しても、上記の問題のいくつかは依然として当てはまる場合があります。