• データベース ファイルを SQL Server Express にアタッチする方法
    http://msdn.microsoft.com/ja-jp/library/ms165673(SQL.90).aspx

管理ツールを入れればGUIでいけるようだけど、コマンドラインでも可能なので、その方法のメモ。

元ネタは上記リンクから、青文字が追記部分です。


サーバーでコマンド プロンプトを開きます。

コマンド プロンプトから、次の sqlcmd コマンドを使用して SQL Server のインスタンスに接続します。

sqlcmd -S ServerInstance

Server はコンピュータの名前、Instance はインスタンスの名前です。
(ローカルの場合は、sqlcmdだけでOK)

DBのアタッチ

接続したら、次のコマンドを入力します。

USE [master]
GO
CREATE DATABASE [database_name] ON
( FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLData<database name>.mdf' ),
( FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLData<database name>.ldf' )
FOR ATTACH ;
GO

database_name はアタッチするデータベースの名前を表し、FILENAME はデータベース ファイルとログ ファイルのパスとファイル名を表します。FOR ATTACH では、既存のオペレーティング システム ファイルのセットをアタッチすることにより、データベースを作成するように指定します。
(VisualStudioの場合は[xxxxx].mdfと[xxxxx]_log.ldfの2つが対象)

データベースがアタッチされたことを確認するには、次の 2 つのコマンドを入力します。

select name from sys.databases
go

sqlcmd ツールにより、SQL Server Express のこのインスタンスにアタッチされたすべてのデータベースの名前が表示されます。この一覧には、手順 3. で指定したデータベース名が含まれています。

DBのデタッチ

sp_detach_db 'database'
go

デタッチを行わないとVisualStudio等で開けなくなります。