web-dev-qa-db-ja.com

SSISのユーザー「NT AUTHORITY \ ANONYMOUS LOGON」のログインに失敗しました

MySQLデータベースとSQLサーバーデータベース間のデータ移行を実行するSSISパッケージがあります。 Visual StudioまたはSQL Server Management Studioから手動で実行すると、正常に実行されました。しかし、SQLサーバーエージェントジョブを使用してスケジュールすると、エラーが発生します。

説明:ユーザー 'NT AUTHORITY\ANONYMOUS LOGON'のログインに失敗しました。ソース:.Net SqlClientデータプロバイダー

このエラーは何ですか?なぜこれはスケジュールされたときだけ起こるのですか?この問題を解決するにはどうすればよいですか?

4
GihanDB

DimUserが提案したように、委任/偽装の問題に対処している可能性があります。

SSISが1つのDBサーバーからデータをフェッチして他のサーバーに配信するだけの場合、ソリューションははるかに簡単で、SQL Serverエージェントプロキシをセットアップする必要があります。

Visual StudioまたはSSMSから手動でSSISパッケージを実行している場合、パッケージはWindows資格情報を使用してSQL Serverにログオンしようとします。アカウントに適切な権限がある場合、成功します。

SQL Serverエージェントジョブをセットアップしてそのパッケージを実行すると、SQL Serverエージェントを実行しているサービスアカウントがこのパッケージを実行します。彼はWindows資格情報を持っていないため、匿名ログインを使用しようとすると、このエラーメッセージが表示されます。

SQL Serverエージェントが別のアカウントを使用してパッケージを実行できるようにするには、次の3つを設定する必要があります。

  1. 資格情報を作成する
  2. プロキシアカウントを設定する
  3. プロキシアカウントを使用するようにSQL Serverエージェントステップを構成する

資格情報の作成パッケージを実行するSQL Serverに接続します。 [セキュリティ]を右クリックし、[新しい認証情報...]を選択します。わかりやすい名前(資格情報名)を入力し、使用するWindowsアカウント(ID)を選択して、パスワードを入力します。 OKをクリックします。

最初のテストでは、独自のWindowsアカウントを使用できます。本番環境で使用する場合は、専用のADサービスアカウントを作成することをお勧めします(最小限のアクセス許可で)。

プロキシアカウントのセットアップ SQL Serverエージェントフォルダを展開します。プロキシを開き、[SSISパッケージの実行]を右クリックして[新しいプロキシ...]を選択します。わかりやすいプロキシ名を入力し、前に作成した資格情報を使用します。

プロキシアカウントを使用するようにSQL Serverエージェントステップを構成するエージェントジョブを開き、SSISパッケージを実行するステップのプロパティを選択します。これで、[別のユーザーとして実行]ドロップダウンリストでプロキシアカウントを選択できます。

追加設定:パッケージがSSISカタログに展開されている場合は、資格情報に使用したWindowsログインにSSISDBの "SSIS_Admin"ロールも付与する必要があります。

そのためには、SQL Server(パブリック)で通常のWindowsログインとしてアカウントを作成し、SSIS_Adminロールを使用してユーザーをSSISDBにマップする必要があります。

2