【问题标题】:Running queries against multiple servers?对多台服务器运行查询?
【发布时间】:2011-10-14 18:23:25
【问题描述】:

我不确定解决这个问题的最佳设计模式是什么,所以任何建议都将不胜感激。我有两个 SQL Server A(带有 DB P、Q、R)和 B(带有 DB X、Y、Z)。

从命令行将位于服务器A 上的表与服务器B 上的表连接起来的有效方法是什么?基本上,我正在尝试自动执行长时间运行的查询列表,但不确定如何继续。

编辑:我无法控制服务器,也不是管理员。

【问题讨论】:

  • I do not have control over the servers and am not an admin. 管理员愿意与您合作吗?
  • 我只是对他们进行了 ping 操作,但目前假设是最坏的情况。您认为这可以通过 Business Intelligence Studio 完成吗?另一方面,我可以在任一服务器上创建临时表,所以不确定这是否有用。

标签: sql sql-server tsql sql-server-2008 sqlcmd


【解决方案1】:

至少我会在两台服务器之间创建一个Link Server。使用OPENROWSET 之类的东西会比使用链接服务器慢。

根据您需要这些查询以多快的速度运行,您可能会考虑使用一个夜间进程将数据从服务器 A 复制到服务器 b(或相反),这样您就不必担心跨服务器的问题。

【讨论】:

  • +1 OPENROWSET 可能会起作用。我会检查并返回。谢谢。
  • 好吧,很遗憾,我收到此错误消息:SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online. 所以我猜我运气不好。
  • 去 DBA 的办公室,开始跺脚。没有他们的帮助,你只能做这么多......
【解决方案2】:

无法跨不同服务器执行连接。您可以在这些服务器上使用集群解决方案为您完成这项工作,也可以自己完成 - 从一个表中读取,并在您的代码中手动执行连接。

【讨论】:

  • +1 谢谢。我首先尝试使用纯 T-SQL 方法失败,我将求助于编写 C# 应用程序层。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多