2

我有 2 个存储过程,每个存储过程都位于不同物理服务器上的单独数据库中。这两个数据库都是在(单独的)共享网络主机中创建的,因此,我没有服务器级别的访问权限。这两个服务器都具有有效的 IP 地址,并且我创建了具有适当权限的用户帐户,以便在其相应的服务器中运行这些存储过程。

问题是:我想从另一个执行这些过程之一,但我无法创建链接服务器(因为两个数据库都在共享托管环境中)。如何从第一个存储过程内部执行远程存储过程?

(ps)我检查了很多关于这个问题的问题,但他们都认为可以在这两个服务器之间创建一个链接服务器。

4

2 回答 2

1

我想从另一个执行这些过程之一,但我无法创建链接服务器

如果没有链接服务器,这通常是不可能的。

正如@Martin 评论的那样,您可以尝试OPENDATASOURCE,但这不太可能起作用,因为它默认被禁用并且不太可能由托管公司启用。

在这些情况下,您唯一的选择是将每个存储过程与您的应用程序分开运行并在应用程序中处理结果。

于 2012-10-20T11:18:20.717 回答
1

如果您对两台服务器都有访问详细信息,则可以创建 .NET CLR 并在服务器上进行部署。

将登录名、密码、存储过程名称和参数传递给 CLR 函数,并在 CLR 代码中连接并执行它。

这是一篇如何从 CLR 返回表的文章:http: //msdn.microsoft.com/en-us/library/ms131103.aspx

要连接到 SQL 服务器,您需要使用通用 .Net 库:System.Data.SqlClient

要使用的对象:SqlConnection、SqlCommand 和 SqlDataAdapter。

我自己没有做过,更容易创建链接服务器,但我不明白为什么它不应该工作,当然你必须有权在服务器上上传程序集。

于 2012-10-21T16:40:33.410 回答