【问题标题】:Altering a table on a different server through a query通过查询更改不同服务器上的表
【发布时间】:2014-03-05 20:57:23
【问题描述】:

我正在编写一些动态 SQL(我对它很陌生),并试图自动更改可能存在于不同 SQL Server 2008 实例上的多个表。我的服务器已链接,我知道每个服务器的表存在,但是当我尝试运行下面的查询时,我得到“找不到对象...因为它不存在或您没有权限”

查询:

Alter Table [Server10].[Database2].[dbo].[documents] Add NewField int

如果我在 SSMS 中连接到服务器并删除服务器名称 (Server10),它就可以工作。

关于如何创建此查询的任何建议。谢谢

【问题讨论】:

  • 您是否正在尝试“双跳”? [lextonr.wordpress.com/2012/07/26/double-hop-linked-servers/]
  • 我不这么认为,因为我可以使用相同的服务器路径在该表上运行选择
  • 对于链接服务器属性,安全设置是什么?我通常不使用登录映射。连接将“使用登录名的当前安全上下文进行”。我使用 Windows 身份验证进行连接,并且我是两台服务器上的系统管理员,所以我没有任何限制。
  • 我是通过 Windows 身份验证的管理员。如果我通过 SSMS 直接连接到该服务器,我可以创建新字段或删除它,因此我认为这不是我的用户权限。
  • 这都是链接服务器的安全设置所描述的。您可能是连接到 ServerA 上下文中的管理员,但您可能不是连接到 ServerB 的链接服务器上下文中的管理员。例如,链接服务器可能正在使用模拟或特定于 ServerB 的安全上下文。

标签: sql sql-server tsql


【解决方案1】:

我认为不支持链接服务器上的 alter table。你可以这样做:

EXECUTE [Server10].[Database2].[dbo].sp_executesql N'ALTER TABLE [documents] Add NewField int'

【讨论】:

  • 坦克。我认为这让我更接近了一步。我知道服务器没有为 RPC 配置。我会告诉管理员。谢谢
  • Goog,管理员应该会帮助你。我认为您必须启用 RPC OUT - 查看链接服务器属性。可能还需要应用最新的服务包(并重新启动 sql server 引擎)。
猜你喜欢
  • 2020-10-11
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多