データベース ファイルを SQL Server Express にアタッチする方法

更新 : 2006 年 7 月 17 日

sqlcmd ツールを使用することにより、SQL Server 2005 Express Edition (SQL Server Express) のインスタンスにデータベース ファイルをアタッチできます。たとえば、以前にインストールした SQL Server Express の既存のデータベース ファイルがある場合、それらのファイルを新しくインストールした SQL Server Express にアタッチできます。同様に、破損したデータベースをバックアップ コピーから復元する場合、バックアップされているデータベース ファイルをアタッチすることができます。

ms165673.security(ja-jp,SQL.90).gifセキュリティ メモ :
不明なソースや信頼されていないソースからのデータベースは、アタッチまたは復元しないことをお勧めします。そのようなデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更することによりエラーを発生させる悪意のあるコードが含まれている可能性があります。データベースの取得元が不明または信頼されていない場合は、事前に運用サーバー以外のサーバーで、そのデータベースに対して DBCC CHECKDB を実行してください。さらに、ストアド プロシージャやその他のユーザー定義コードなど、データベースのコードを調べてください。

データベース ファイルをアタッチするには

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

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

    sqlcmd -S Server\Instance
    

    Server はコンピュータの名前、Instance はインスタンスの名前です。

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

    USE [master]
    GO
    CREATE DATABASE [database_name] ON 
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\<database name>.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\<database name>.ldf' )
     FOR ATTACH ;
    GO
    

    database_name はアタッチするデータベースの名前を表し、FILENAME はデータベース ファイルとログ ファイルのパスとファイル名を表します。FOR ATTACH では、既存のオペレーティング システム ファイルのセットをアタッチすることにより、データベースを作成するように指定します。

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

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

ms165673.note(ja-jp,SQL.90).gifメモ :
データベースのアタッチの詳細については、「データベースのデタッチとアタッチ」および、SQL Server 2005 Books Online の「CREATE DATABASE (Transact-SQL)」を参照してください。