web-dev-qa-db-ja.com

MSDBデータベースの移動

Msdbデータベースをデフォルトの場所(C:\ Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA)から別のドライブ(E :)に移動しようとしています。データベースを移動した後、次のようにエラーが発生します(SSMSでデータベースノードを展開しているときにエラーが発生し、データベースにアクセスできなくなります)。

このリクエストのデータを取得できませんでした。 (Microsoft.SqlServer.Management.Sdk.Sfc)

ヘルプが必要な場合は、次をクリックしてください http://go.Microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476

- - - - - - - - - - - - - - - 追加情報:

Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo)


ファイルにアクセスできないか、メモリまたはディスク領域が不足しているため、データベース 'msdb'を開くことができません。詳細については、SQL Serverエラーログを参照してください。 (Microsoft SQL Server、エラー:945)

ヘルプが必要な場合は、次をクリックしてください。 http://go.Microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.00.2531&EvtSrc=MSSQLServer&EvtID=945&LinkId=20476


Msdbデータベースをシフトする手順は次のとおりです。

  1. 移動するファイルごとに、次のステートメントを実行します。

ALTER DATABASE msdb MODIFY FILE ( NAME = MSDBData , FILENAME = 'E:\MSDBData.mdf' )

ALTER DATABASE msdb MODIFY FILE ( NAME = MSDBLog , FILENAME = 'E:\MSDBLog.ldf' )

  1. SQL Serverのインスタンスを停止して、メンテナンスを実行します。
  2. ファイルを新しい場所に移動します。
  3. SQL Serverのインスタンスまたはサーバーを再起動します。また、私は次のクエリを実行してパスを確認しました

SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'msdb');

出力では、MSDBdataとMSDBLogの両方の現在の場所がE:\として表示されていました

このエラーは、サーバーをテストするために実行しているときに発生しました。本番サーバーでやりたい。だからこのエラーで私を助けてください。 msdbデータベースを正確に移動するにはどうすればよいですか?

4
IT researcher

コメントでは、SQLサービスがNetwork Serviceアカウントとして実行されていることを示しています。

http://msdn.Microsoft.com/en-us/library/windows/desktop/ms684272(v = vs.85).aspx

NetworkServiceアカウントは、サービスコントロールマネージャーによって使用される定義済みのローカルアカウントです。このアカウントはセキュリティサブシステムによって認識されないため、LookupAccountName関数の呼び出しでその名前を指定することはできません。ローカルコンピュータに対する最小権限があり、ネットワーク上のコンピュータとして機能します。

これは、VistaおよびWindows Server 2008でのインストールのデフォルトアカウントです。インストール中に、このアカウントには、SQL ServerデータディレクトリへのFull Controlファイルシステム権限が付与されています SQL ServerのサービスごとのSIDまたは次の記事のローカルWindowsグループセクション。

http://msdn.Microsoft.com/en-us/library/ms143504.aspx#Reviewing_ACLs

データベースファイルの一部を再配置したので、SQL Serverサービスアカウントには新しい場所へのアクセス許可が必要です。コメントで@MarianはNetwork Serviceに必要な権限を付与するための指示を提供しました。

ドライブを右クリックし、[プロパティ]-> [セキュリティ]-> [編集]-> [ネットワークサービスユーザーを追加]-> [フルコントロール]をクリックします。デフォルトではそうではありません。または、特定のフォルダを作成して、そこにフルコントロールのアクセス許可を与えるだけです。そして、そのフォルダーにデータファイルを移動します。

新しいフォルダを作成してそこにファイルを移動するというアドバイスも優れています。

Network Serviceアカウントとして実行されている追加のサービスにも、このフォルダーへのアクセス許可があります。理想的には、SQLサービスはそれぞれ独自の個別のアカウントを持つ必要があります。

http://support.Microsoft.com/kb/216072

サービスアカウントを選択するときは、最小限の特権の原則を考慮してください。サービスアカウントには、ジョブを実行するために必要な権限だけが必要で、それ以上の権限は必要ありません。また、アカウントの分離についても考慮する必要があります。サービスアカウントは互いに異なるだけでなく、同じサーバー上の他のサービスによって使用されるべきではありません。 SQL Serverサービスアカウントまたはサービスグル​​ープに追加の権限を付与しないでください。アクセス許可は、グループメンバーシップを通じて付与されるか、サービスSIDに直接付与されます(サービスSIDがサポートされている場合)。詳細については、Books Onlineのトピックを参照してください。Windowsサービスアカウントの設定

1
Brian Bentley