sp_attach_single_file_db (Transact-SQL)
適用対象: SQL Server
データ ファイルが 1 つだけのデータベースを現在のサーバーにアタッチします。 sp_attach_single_file_db
は、複数のデータ ファイルでは使用できません。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CREATE DATABASE <database_name> FOR ATTACH
を使用することをお勧めします。 詳細については、
不明なソースまたは信頼されていないソースからデータベースをアタッチまたは復元しないでください。 こうしたデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更してエラーを発生させるような、悪意のあるコードが含まれている可能性があります。 不明または信頼できないソースのデータベースを使用する前に、運用サーバー以外のサーバーでそのデータベースに対し DBCC CHECKDB を実行し、さらに、そのデータベースのストアド プロシージャやその他のユーザー定義コードなどのコードを調べます。
構文
sp_attach_single_file_db
[ @dbname = ] N'dbname'
, [ @physname = ] N'physname'
[ ; ]
引数
[ @dbname = ] N'dbname'
サーバーに接続するデータベースの名前。 @dbname は sysname で、既定値はありません。
[ @physname = ] N'physname'
データベース ファイルの物理名 (パスを含む)。 @physname は nvarchar(260)で、既定値はありません。
この引数は、CREATE DATABASE
ステートメントの FILENAME
パラメーターにマップされます。 詳細については、
Note
フルテキスト カタログ ファイルを含む SQL Server 2005 (9.x) データベースを SQL Server の新しいサーバー インスタンスにアタッチすると、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
サーバーにデータベースをアタッチすると、新しいログ ファイルがビルドされます。 データベースが読み取り専用の場合、ログ ファイルは、アタッチされる前の場所に作成されます。
Note
データベース スナップショットのデタッチおよびアタッチは行うことができません。
レプリケートされたデータベースでは、この手順を使用しないでください。
アクセス許可
データベースがアタッチされるときにアクセス許可がどのように処理されるかについては、「 CREATE DATABASEを参照してください。
例
次の例では、AdventureWorks2022
をデタッチした後、AdventureWorks2022
から現在のサーバーに 1 つのファイルをアタッチします。
USE master;
GO
EXEC sp_detach_db @dbname = 'AdventureWorks2022';
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks2022',
@physname =
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_Data.mdf';