sp_attach_single_file_db (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン)

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

重要

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

重要

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

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

構文

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

引数

[ @dbname = ] 'dbname' サーバーにアタッチするデータベースの名前を指定します。 名前は一意である必要があります。 dbnamesysname,、既定値は NULL です。

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

注意

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

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

リターン コードの値

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

結果セット

なし

解説

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

sp_attach_single_file_db は、1つのログファイルがあるデータベースでのみ機能します。 Sp_attach_single_file_db データベースをサーバーにアタッチすると、新しいログファイルが作成されます。 データベースが読み取り専用の場合、ログ ファイルは、アタッチされる前の場所に作成されます。

注意

データベース スナップショットのデタッチおよびアタッチは行うことができません。

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

アクセス許可

データベースがアタッチされているときの権限の処理方法については、「 CREATE database (SQL Server transact-sql)」を参照してください。

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

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

参照

データベースのデタッチとアタッチ (SQL Server)
sp_detach_db (Transact-sql)
sp_helpfile (Transact-sql)
システム ストアド プロシージャ (Transact-SQL)