【发布时间】:2013-11-07 16:24:33
【问题描述】:
我需要运行存储过程,让我们使用来自不同 sql server 的表。其中一台服务器已禁用“链接服务器”或分布式事务功能;因此不能从存储过程中连接表。一台服务器表要更新,其他服务器数据是只读的。
因为我正在开发一个 ASP.Net Web 应用程序项目,所以我希望能利用它来解决这个问题。我能想到的最佳解决方案是从一台服务器读取表行作为 XML 并将其作为 XML 参数提供给其他服务器数据库中的存储过程,以便可以将其转换回表并使用。你有更好的想法吗?
谢谢。
【问题讨论】:
-
为什么要使用 XML?只需从 sql server 实例 1 中读取数据,然后插入到 sql server 实例 2 中的表中。
-
@RichardDesLonde 如何将表传递给存储过程?
-
你为什么打算重新创建表只是为了执行更新?
-
@Aamir 您没有将表传递给存储过程。您只需使用您的 .net 功能将记录插入到第二个数据库中的表中,然后您就可以在 SQL 中使用它做任何您想做的事情。
-
@RichardDesLonde ,根据您的建议,我想我已经在目标服务器数据库中创建了代理表。这些表将代表只读/远程服务器表。在将它们用作存储过程中的本地表之前,我将首先使用 SqlBulkCopy 对象来填充这些代理表。听起来是个不错的计划。不知道哪种解决方案会更昂贵,这个解决方案还是 xml 解决方案,但是这个解决方案听起来很直接。谢谢。
标签: .net sql-server linked-server