SQL Server のデタッチとアタッチ機能を使用して SQL Server データベースを新しい場所に移動する方法
この記事は、以前は次の ID で公開されていました: JP224071 目次概要
この資料では、Microsoft SQL Server 2005、SQL Server 2000、または SQL Server 7.0 の任意のデータベースのデータ ファイルとログ ファイルの場所を変更する方法について説明します。
SQL Server 2005 のシステム データベースを移動する方法の詳細については、SQL Server Books Online の「システム データベースの移動」を参照してください。このトピックを参照するには、以下の MSDN (Microsoft Developer Network) Web サイトにアクセスしてください。 http://msdn2.microsoft.com/ja-jp/library/ms345408.aspx (http://msdn2.microsoft.com/ja-jp/library/ms345408.aspx) 詳細
SQL Server システム データベースの場所を変更する手順は、ユーザー データベースの場所を変更する際の手順とは異なります。これらの特殊なケースについては、それぞれのケースごとに説明します。
注 : SQL Server 7.0 システム データベースと SQL Server 2000 システム データベースには互換性がありません。SQL Server 7.0 の master データベース、model データベース、msdb データベース、またはディストリビューション データベースを SQL Server 2000 にアタッチしないでください。SQL Server 2005 を使用している場合は、SQL Server 2005 のデータベースのみをインスタンスにアタッチできます。この資料のすべての例では、SQL Server が D:\Mssql7 フォルダにインストールされ、すべてのデータ ファイルとログ ファイルがデフォルトのディレクトリ D:\Mssql7\Data フォルダに保存されていると想定しています。また、例では、すべてのデータベースのデータ ファイルとログ ファイルを E:\Sqldata フォルダに移動します。 必要条件
ユーザー データベースの移動次の例では、mydb というデータベースを移動します。このデータベースは、Mydb.mdf という 1 つのデータ ファイルと Mydblog.ldf という 1 つのログ ファイルから構成されます。移動するデータベースのデータ ファイルまたはログ ファイルが複数存在する場合は、sp_attach_db ストアド プロシージャでファイルをコンマで区切って指定します。sp_detach_db プロシージャではファイルを指定しないため、データベースを構成するファイル数に関係なく同じ構文を使用します。
922804 (http://support.microsoft.com/kb/922804/)
[FIX] Network Attached Storage 上にある Microsoft SQL Server 2005 データベースをデタッチした後、SQL Server データベースを再アタッチできない
この問題、および SQL Server 2005 でデータベースをデタッチした場合にデータベースに適用される権限について考慮します。詳細については、SQL Server Books Online で、「データ ファイルとログ ファイルのセキュリティ保護」の「データベースのデタッチとアタッチ」を参照してください。このトピックを参照するには、以下の MSDN (Microsoft Developer Network) Web サイトにアクセスしてください。
http://msdn2.microsoft.com/ja-jp/library/ms189128.aspx (http://msdn2.microsoft.com/ja-jp/library/ms189128.aspx) サンプル データベースの移動Pubs サンプル データベースおよび Northwind サンプル データベース (SQL Server 7.0 または SQL Server 2000 の場合)、または AdventureWorks サンプル データベースおよび AdventureWorksDW サンプル データベース (SQL Server 2005 の場合) を移動するには、ユーザー データベースの移動と同じ手順を実行します。model データベースの移動SQL Server 7.0
SQL Server 2005 および SQL Server 2000SQL Server 2005 および SQL Server 2000 では、sp_detach_db ストアド プロシージャを使用してシステム データベースをデタッチできません。sp_detach_db 'model' ステートメントを実行すると、次のエラー メッセージが表示されます。
サーバー : メッセージ 7940、レベル 16、状態 1、行 1
model データベースを移動するには、-c オプション、-m オプション、およびトレース フラグ 3608 を指定して SQL Server を起動する必要があります。トレース フラグ 3608 を指定すると、master データベース以外のデータベースが SQL Server で復旧されません。
システム データベース master、model、msdb、および tempdb はデタッチできません。 注 : これを行った後は、どのユーザー データベースにもアクセスできなくなります。このトレース フラグの使用中は、以下の手順以外の操作は実行しないでください。SQL Server の起動時のパラメータとして、トレース フラグ 3608 を追加するには、以下の手順を実行します。
http://msdn2.microsoft.com/ja-jp/library/ms190737.aspx (http://msdn2.microsoft.com/ja-jp/library/ms190737.aspx)
-c オプション、-m オプション、およびトレース フラグ 3608 の追加後、次の手順を実行します。
msdb データベースの移動SQL Server 7.0注 : この手順と model データベースの移動を共に実行する場合は、最初に model、次に msdb の順に再アタッチする必要があります。以下の手順を実行します。
サーバー : メッセージ 3702、レベル 16、状態 1、行 0
データベース 'msdb' は現在使用中なので、削除できません。 DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。 SQL Server 2005 および SQL Server 2000msdb データベースを移動するには、-c オプション、-m オプション、およびトレース フラグ 3608 を指定して SQL Server を起動する必要があります。トレース フラグ 3608 を指定すると、master データベース以外のデータベースが SQL Server で復旧されません。-c オプション、-m オプション、およびトレース フラグ 3608 を追加するには、「model データベースの移動」に記載されている手順を実行します。-c オプション、-m オプション、およびトレース フラグ 3608 の追加後、以下の手順を実行します。
メッセージ 0、レベル 11、状態 0、行 0
この場合、msdb データベースをデタッチし、model データベースを再アタッチした後、msdb データベースを再アタッチする必要があります。
現在のコマンドで重大なエラーが発生しました。結果は破棄しなければなりません。 msdb データベースを移動した後で、次のエラー メッセージが表示されることがあります。
エラー 229: EXECUTE 権限は、オブジェクト 'ObjectName'、データベース 'master'、所有者 'dbo' にありません。
この問題は、組み合わせ所有権が破損しているために発生します。msdb データベースの所有者と master データベースの所有者が同一ではありません。この例では、msdb データベースの所有権が変更されています。この問題を回避するには、次の Transact-SQL ステートメントを実行します。これを実行するには、Osql.exe コマンド ライン ユーティリティ (SQL Server 7.0 と SQL Server 2000 の場合) または Sqlcmd.exe コマンド ライン ユーティリティ (SQL Server 2005 の場合) を使用します。
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
272424 (http://support.microsoft.com/kb/272424/)
複数のデータベースをチェックする組み合わせオブジェクト所有権は、オブジェクト所有者に割り当てられるログインに依存する
master データベースの移動
tempdb データベースの移動tempdb データベースは ALTER DATABASE ステートメントを使用して移動できます。
master データベースと Resource データベースの移動master データベースと Resource データベースを移動する方法の詳細については、以下の MSDN (Microsoft Developer Network) Web サイトを参照してください。http://msdn2.microsoft.com/ja-jp/library/ms345408.aspx (http://msdn2.microsoft.com/ja-jp/library/ms345408.aspx) 関連情報
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
912397 (http://support.microsoft.com/kb/912397/)
SQL Server 2000 のクラスタ化されたインスタンスまたは SQL Server 2005 のクラスタ化されたインスタンスの起動時のパラメータを無効な値に変更すると SQL Server サービスを開始できない
274188 (http://support.microsoft.com/kb/274188/)
[SQL]PRB: 対応するログインの存在しないユーザー
246133 (http://support.microsoft.com/kb/246133/)
SQL Server のインスタンス間でログインおよびパスワードを転送する方法
168001 (http://support.microsoft.com/kb/168001/)
データベースの復元後にデータベース上のユーザー ログインと権限が無効になる
詳細については、以下の書籍を参照してください。
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration トレーニングキット上下巻 Microsoft Press 発行、2001 年
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration (http://www.microsoft.com/mspress/books/4885.aspx) Microsoft Press 発行、2001 年
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit (http://www.microsoft.com/mspress/books/4939.aspx) Microsoft Press 発行、2001 年 この資料は以下の製品について記述したものです。
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。" | サポート技術情報の翻訳
|

先頭へ戻る
