0

我需要每天转移一张桌子。表名每天都在变化,所以我应该使用脚本来获取表名。

有一个作业步骤将数据从源表传输到使用T-SQL查询创建的目标表。sourceTable 和destinationTable 位于不同的服务器中。链接服务器工作正常。

如果我在 sql serer management studio 中执行相同的查询,它工作正常。但是当在这一步执行作业时,我看到了这条消息:

以用户身份执行:NT AUTHORITY\SYSTEM。用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。步骤失败。

两个 sql server 都是 2008 R2 版本,并且相互链接。

您可能会建议一些其他方法,而不是使用 T-SQL。

任何帮助,将不胜感激。

4

2 回答 2

1

这是因为 SQL 服务器的“2-Hops”问题。我可以通过两种方式解决这个问题: 1. 仍然使用链接服务器:在远程服务器上创建具有 SQL Server 身份验证的用户并提供所有需要的权限。然后打开链接服务器属性并将您的帐户映射到您刚刚创建的用户,如下所示: 在此处输入图像描述

之后,您将能够运行您的脚本

  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 回答