sp_attach_single_file_db (Transact-SQL)

データ ファイルが 1 つだけ格納されているデータベースを現在のサーバーにアタッチします。sp_attach_single_file_db は複数のデータ ファイルに対しては使用できません。

重要な注意事項重要

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに、CREATE DATABASE database_name FOR ATTACH を使用することをお勧めします。詳細については、「CREATE DATABASE (Transact-SQL)」を参照してください。レプリケートされたデータベースには、このプロシージャを使用しないでください。

セキュリティに関する注意セキュリティに関する注意

不明なソースや信頼されていないソースからデータベースをアタッチまたは復元しないことをお勧めします。そのようなデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更することによりエラーを発生させる悪意のあるコードが含まれている可能性があるからです。不明なソースや信頼されていないソースからのデータベースを使用する前には、非稼働サーバーにあるデータベースで DBCC CHECKDB を実行してください。また、ストアド プロシージャやその他のユーザー定義コードなど、データベースのコードを確認してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_attach_single_file_db [ @dbname= ] 'dbname'
        , [ @physname= ] 'physical_name'

引数

  • [ @dbname= ] 'dbname'
    サーバーにアタッチされるデータベースの名前を指定します。一意な名前を指定してください。dbname のデータ型は sysname で、既定値は NULL です。

  • [ @physname= ] 'physical_name'
    データベース ファイルの物理名を、パスも含めて指定します。physical_name のデータ型は nvarchar(260) で、既定値は NULL です。

    注意

    この引数は、CREATE DATABASE ステートメントの FILENAME パラメーターにマップされます。詳細については、「CREATE DATABASE (Transact-SQL)」を参照してください。

    フルテキスト カタログ ファイルを含む SQL Server 2005 データベースを SQL Server 2008 R2 サーバー インスタンスにアタッチする場合、カタログ ファイルは SQL Server 2005 と同様に他のデータベース ファイルと一緒に以前の場所からアタッチされます。詳細については、「フルテキスト検索のアップグレード」を参照してください。

リターン コード値

0 (成功) または 1 (失敗)

結果セット

なし

説明

sp_attach_single_file_db は、sp_detach_db 操作を明示的に実行してサーバーからデタッチされたデータベース、またはコピーされたデータベースに対してのみ使用してください。

sp_attach_single_file_db は、ログ ファイルが 1 つだけ格納されているデータベースに対してのみ使用できます。sp_attach_single_file_db によってデータベースがサーバーにアタッチされると、新しいログ ファイルが作成されます。データベースが読み取り専用の場合、ログ ファイルは、アタッチされる前の場所に作成されます。

注意

データベース スナップショットは、デタッチまたはアタッチできません。

レプリケートされたデータベースには、このプロシージャを使用しないでください。

権限

データベースをアタッチする際の権限の扱いについては、「CREATE DATABASE (Transact-SQL)」を参照してください。

次の例では、AdventureWorks2008R2 をデタッチした後、AdventureWorks2008R2 から現在のサーバーに 1 つのファイルをアタッチします。

USE master;
GO
EXEC sp_detach_db @dbname = 'AdventureWorks2008R2';
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks2008R2', 
    @physname = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf';