SQLSERVERAGENT仮想アカウントへのファイルシステムアクセスを許可する


23

この質問でNT Service\SQLSERVERAGENTマークされた回答に基づいて、Windowsアカウントのファイルシステムアクセスを許可しようとしています。これは仮想サービスアカウントであり、コントロールパネル->ユーザーアカウント領域には表示されないと思います。

このサービスアカウントにファイルシステムへのアクセスを許可するにはどうすればよいですか?具体的には、Windows 7。

私はいくつかのアプローチを読みましたが、私には選択肢がないようです。PowerShellのアプローチを試しましたが、ADコマンドは有効なコマンドではありませんでした。これらのコマンドに必要なWindowsパッチをダウンロードしてインストールしました。また、SQL Server構成マネージャーまたはManagement Studioを介してこれを行うことができるはずであることも読みました。ただし、これらのアクセス許可を調整する場所はわかりません。

SQL Serverエージェントプロセスの開始に失敗し、次のエラーメッセージが表示されます。

Login failed for user 'NT SERVICE\SQLSERVERAGENT'.  
Reason: Failed to open the explicitly specified database 'msdb'.  
[CLIENT: <local machine>]

私のグーグルに基づいて、それはこのアカウントの許可に関係しています。

データベースが破損しているかどうかはわかりませんが、データベースが正常な状態にあると表示されます。SQL Serverエージェントのログインは、sysadminpublicグループの一部です。

回答:


18

具体的に質問に答えるために、ビルトインSQL Serverエージェントアカウントにディスクアクセス権を与える方法を次に示します。しかし、私が本当の問題であると信じるものに答えながら読んでください:

1.>ドライブを右クリックしてプロパティを選択し、[追加]ボタンをクリックしてSQLSERVERAGENTアカウントを入力します([この場所から]テキストボックスではなく、コンピューター名を選択してください)。

ここに画像の説明を入力してください

2.> [名前の確認]ボタンをクリックして、アカウントが有効であることを確認します。

ここに画像の説明を入力してください

3.>次に、必要なファイル許可をSQLSERVERAGENTアカウントに追加します。トラブルシューティングの目的で、フルコントロールを与え、必要に応じて後で縮小することができます。

ここに画像の説明を入力してください

そうは言っても、おそらくSQL Server構成マネージャーを使用して、SQLエージェントユーザーを再度追加する必要があります。これは、msdbとログインについてのコメントに基づいています。構成マネージャーは、Windowsサービスアプレットを使用するよりもSQL Serverに多くの変更を加えるため、すべてのSQLサービスを変更するには、常に構成マネージャーを使用する必要があります。

これにより、誰かがWindowsサービス内のアカウントを変更して、起動時にサービスが失敗する場合に問題が修正されます。Configuration Manager内でリセットする必要があります。これにより、Configuration Managerは、ローカルサービスアカウント(NT SERVICE \ SQLSERVERAGENT)のMSDBデータベースを管理するために必要な権限をSQL Serverに追加できますが、Windowsサービスアプレット内のアカウントを変更することはできません。

警告:2000より上のバージョンのSQL Server Expressには、SQLエージェントは含まれていません。特定の側面がそこにあるように見えるかもしれませんが、製品のExpressバージョンでは使用できません。

開始するには、SQL Server構成マネージャーを開き、SQL ServerサービスでSQL Serverエージェントサービスをダブルクリックします。[ビルトインアカウント]ラジオボタンを選択し、[ローカルサービス]を選択して、[適用]ボタンをクリックします。重要:このアカウントが選択されていることが既にわかっている場合は、別のアカウントを選択して[適用]ボタンをクリックします。次に、ローカルサービスに戻し、[適用]ボタンをクリックして、Configuration ManagerがSQL Agentサービスを開始するための正しいMSDBアクセス許可を追加できるようにします。次に、SQL Serverエージェントを再起動して、この新しい設定を反映します。

ここに画像の説明を入力してください


1
SQL Serverエージェントアカウントが設定されてNT Service\SQLAgent$MyInstanceNameおり、フォルダーにセキュリティを設定しようとして[名前の確認]を押すと、名前が見つかりませんでしたが見つかりませんでした。多くのフラストレーションの後、[追加]を押してアクセス許可を追加する際のデフォルトの[From This Location]がローカルマシンに設定されておらず、ドメインに設定されていることに気付きました。これをローカルマシン(ツリーの非常にルートノード)に変更すると、NT Service\SQLAgent$MyInstanceNameアカウントを検出してフォルダーのアクセス許可に追加できました。
-NibblyPig

エラーをログに記録したイベントログから「MyInstanceName」を取得しました。
ジェイセン

2

SQL ServerエージェントのログインアカウントをLocalSystemに設定して、この問題を解決しました。


2
これは物事稼働を得ることができる回避策はありますが、それは一般的に提案された解決策使用するよりも安全性が低いと考えられているこの答えに
RDFozz

2

イライラすることに同意します。名前を入力するのと同じくらい簡単なようです。 http://zarez.net/?p=3187

概要:NT SERVICE \ MSSQLSERVERと入力し、[名前の確認]をクリックしないで、[OK]をクリックするだけで、SQLエージェントアカウントのフォルダーアクセス許可を設定できます。


1
DBA SEにようこそ!私は投票しませんでした。回答は「リンクのみの回答」カテゴリに分類されます。リモート側がダウンすると、これらの答えは理解できなくなります。あなたの投稿のレビュアーはあなたにそれを言ったはずです、それは彼らの間違いでした。だから:1)あなたの答えは実際に答えである必要があります(上部の質問に対する)2)あなたが何かを引用している場合、ウェブページを参照し、その最も重要なものもコピーに貼り付けます。| 私はあなたに賛成票を投じましたが、他のレビュアーに納得させることをお勧めします。
ペテルはモニカを

素晴らしいアドバイス@peterh、とても親切にしてくれてありがとう。Vジェイソン、コメントの要約を回答に追加しました。これで十分かもしれませんが、他に何かを追加するかどうかを確認するために確認してください。すべての改善が評価されます!
ジャックダグラス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.