web-dev-qa-db-ja.com

DBの再起動後にエラー15404をクリアする方法(再起動以外)

SQL Serverエージェントの1時間ごとのジョブが頻繁に(たとえば、数か月)エラー15404の報告を開始し、介入されるまで報告を続けます。

[298] SQLServerエラー:15404、Windows NTグループ/ユーザー 'DOMAIN_NAME\SomeDomainAccount'に関する情報を取得できませんでした、エラーコード0x6e。 [SQLSTATE 42000](ConnIsLoginSysAdmin)

SQL ServerエンジンおよびSQL Serverエージェントサービスを手動で再起動した直後に、最初の障害が発生することがあります。マシンを再起動すると、問題を解決できます。

ジョブの所有者は、エラーメッセージに表示されている名前で、SQL Server管理者です。

SQL Serverエンジンサービスアカウントはサービスアカウントのように見えます(私はそれがデフォルトのインストールアカウントであると思います(エンジン/エージェントインスタンス間の干渉を防ぐために、一般的なNetworkServiceよりも1ノッチ優れています)。

   NT Service\MSSQL$INSTNAME

ジョブが常に失敗する場合は1つのことですが、再起動後にジョブが成功するので、のようなサービスアカウントが機能しているはずであり、A/Dタイミングの問題またはバグの可能性があると思います。 ITがA/D構成について尋ねられると、応答は通常「何も変更されていません」です。

  • エンジンおよびエージェントサービスを再起動すると、ジョブが失敗し始める可能性があります。
  • マシンを再起動すると問題が解決します。
  • エンジンとエージェントをすぐに再起動しても、ジョブが失敗することはなくなりました。

リンク: SQL Server 8198エラーのトラブルシューティング方法

9
crokusek

解決策ではありませんが、ジョブの所有者をSQLアカウントにすることで問題を回避できます。

ジョブが開始されるたびに、SQL Serverはジョブの所有者のIDを確認し、ジョブを実行する権限があることを確認します。所有者がWindowsアカウントの場合、エンジンはActive Directoryを照会する必要があります。何らかの理由で失敗した場合、ジョブは実行されません。 ADサーバーがビジー状態であるか、ネットワークから切断されているか、SQL Serverサービスアカウントに権限がないことが原因である可能性があります。

再起動後すぐに機能するので、キャッシュされた認証情報と関係があるのではないかと思います。 Windowsは、後で使用するために検索する資格情報を保存します。そのキャッシュは再起動時にクリアされます。おそらく何かがキャッシュを破壊しています。

4
SQL Nerd

ドメインAからドメインBに移動したインスタンスに問題があり、すべての場所で権限を確認し、すべての場所でフルコントロールを許可しました。サービスアカウントの変更、ジョブの所有権、新しいジョブの作成...何も機能しませんでした。 SQL Serverのログインと同じ名前のサービスユーザーB\sqlserviceおよびA\sqlserviceが見つかりましたA\sqlserviceログインを削除した後、すべてが正常に動作し始めました。これは、一部のWindowsポインターが間違っていたことを意味します

0
Federico