0

毎日テーブルを移動する必要があります。テーブル名は毎日変わるので、スクリプトを使用して tableName を取得する必要があります。

T-SQLクエリを使用して作成された sourceTable から destinationTable にデータを転送するジョブ ステップがあります。sourceTable と destinationTable は別のサーバーにあります。リンクサーバーは正常に動作します。

SQL Serer Management Studio で同じクエリを実行すると、正常に動作します。しかし、このステップでジョブが実行されると、次のメッセージが表示されます。

ユーザーとして実行: NT AUTHORITY\SYSTEM。ユーザー「NT AUTHORITY\ANONYMOUS LOGON」のログインに失敗しました。ステップは失敗しました。

両方の SQL サーバーは 2008 R2 バージョンであり、相互にリンクされています。

T-SQL を使用する代わりに、他の方法をアドバイスすることもできます。

どんな助けでも大歓迎です。

4

2 に答える 2

1

これは、SQL サーバーの「2 ホップ」の問題が原因です。私はこの問題を 2 つの方法で解決できました。次に、次のように、リンク サーバーのプロパティを開き、作成したばかりのユーザーへのアカウントのマッピングを開きます。 ここに画像の説明を入力

その後、スクリプトを実行できるようになります

  1. openrowset の使用:

    SELECT a.* FROM OPENROWSET('SQLNCLI', 'Server=;Trusted_Connection=yes;', 'SELECT * from .dbo.') AS a;

于 2014-02-05T21:04:26.717 に答える
0

リンクされたサーバーでこの問題を解決できませんでした。

リンクサーバーの代わりに、次の手順を使用しました。

  1. x の名前を x_temp に変更
  2. SSIS パッケージ (リンク サーバー クエリよりもはるかに高速) を使用して、すべてのデータを x_temp から他のサーバーに移動します。
  3. x_temp の名前を x_dd_mm_yyyy に変更
于 2014-02-11T15:07:06.367 に答える