36


4

Windows NTグループユーザーに関する情報を取得できませんでした

スクリプトを使用してSQL Serverレプリケーションを作成しています。 実行しようとしたとき

`仕事は失敗しました。 ジョブL3BPT2M-Atlas-14の所有者(STAR \ moorer7)にサーバーアクセス権があるかどうかを判断できません(理由:Windows NTグループ/ユーザー 'STAR \ moorer7'、エラーコード0x5に関する情報を取得できませんでした)。 [SQLSTATE 42000](エラー15404))。

これは、複製を定義するスクリプトによって作成されたジョブです。

これをデバッグするにはどうすればよいですか。

7 回答


36


Active DirectoryはSQLエージェントへのアクセスを拒否しています。 エージェントは、STARドメインコントローラによって認識されているアカウントで実行されている必要があります。


8


私にとっては、ジョブはDOMAIN \ Administratorの下で実行されていて、エラーメッセージ「ジョブが失敗しました」で失敗していました。 ジョブエージェント履歴の所有者(DOMAIN \ administrator)がクリーンアップされているかどうかを判断できません:配布にサーバーアクセス権があります(理由:Windows NTグループ/ユーザー 'DOMAIN \ administrator'、エラーコード0x5に関する情報を取得できませんでした)。 [SQLSTATE 42000](エラー15404)。 'これを修正するために、*失敗した各ジョブの所有者を' sa`に変更しました。*その後、問題なく動作しました。 ジョブはレプリケーションのクリーンアップに関連していましたが、それらが手動で追加されたのか、それともレプリケーション設定の一部として追加されたのか不明です - 私はそれに関わっていなかったので、わかりません。


7


仮想マシン上のテスト環境で同様のエラーが発生しました。 テンプレートからのVM​​のクローン作成のためにマシン名が変わると、このエラーが発生する可能性があります。

コンピュータ名がOLDからNEWに変更された場合

ジョブはこのストアドプロシージャを使用します。

msdb.dbo.sp_sqlagent_has_server_access @login_name = 'OLD \ Administrator'

これはこれを使用します:

EXECUTE master.dbo.xp_logininfo 'OLD \ Administrator'

これはこのSQLエラー15404を与える

sys_messagesからmessage_id = 15404のテキストを選択します。 Windows NTグループ/ユーザー '%ls'、エラーコード%#lxに関する情報を取得できませんでした。

状況によっては、どちらが正しいと思いますか。 SQLログインを再作成するスクリプトをVMのクローン作成/展開プロセスに追加しました。


3


私の場合、SQL Server 2008 R2で `IS_ROLEMEMBER()`関数を使用しようとしているときにこのエラーが発生しました。 この機能は、SQL Server 2012より前のバージョンでは無効です。

この関数の代わりに私は使用してしまいました

select 1
from sys.database_principals u
inner join sys.database_role_members ur
    on u.principal_id = ur.member_principal_id
inner join sys.database_principals r
    on ur.role_principal_id = r.principal_id
where r.name = @role_name
and u.name = @username

かなり冗長になりますが、作業は完了します。


2


この問題を解決しました。 私の場合は、両方のDNSサーバーがGoogle DNSだったので、ドメインコントローラにアクセスできないでした。

この問題のチェックリストに追加します。

  • ドメインコントローラにアクセスできるか確認する


1


私はADでロックアウトされているSQLサービスを実行するドメインログインが原因であることが判明した同じ問題を抱えていました。 ロックアウトは、間違ったパスワードを使用して別の目的でサービスアカウントを無関係に使用したために発生しました。

SQLエージェントのログから受け取ったエラーには、サービスアカウントの名前は含まれておらず、認証できなかったユーザー(ジョブ所有者)の名前だけが記載されていました(サービスアカウントを使用してADを調べます)。


1


データベースを正常に展開するには、公開スクリプトのためにVPNに接続する必要がありました。