Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在不同服务器上的其他存储过程中调用一个存储过程_Sql_Sql Server - Fatal编程技术网

Sql 在不同服务器上的其他存储过程中调用一个存储过程

Sql 在不同服务器上的其他存储过程中调用一个存储过程,sql,sql-server,Sql,Sql Server,如何在另一个存储过程中执行一个存储过程 注意:两个存储过程驻留在不同的服务器上如果可以,最简单的方法是在系统上(它们必须是-单击链接以获取有关链接服务器的信息): 查看更多信息 另外,为了避免硬编码服务器名称,请查看Paul的同义词。进一步到@Kyles answer,您可以添加一个,以消除对较长/链接结构的需要。这将抽象被引用的服务器。因此,您可以将SP从UAT移动到实时环境,代码就不必更改。这两个环境中的同义词将在每台服务器上设置,以正确引用该环境中的另一台服务器。我假设S.p是“存储过程”

如何在另一个存储过程中执行一个存储过程


注意:两个存储过程驻留在不同的服务器上

如果可以,最简单的方法是在系统上(它们必须是-单击链接以获取有关链接服务器的信息):

查看更多信息


另外,为了避免硬编码服务器名称,请查看Paul的同义词。

进一步到@Kyles answer,您可以添加一个,以消除对较长/链接结构的需要。这将抽象被引用的服务器。因此,您可以将SP从UAT移动到实时环境,代码就不必更改。这两个环境中的同义词将在每台服务器上设置,以正确引用该环境中的另一台服务器。

我假设S.p是“存储过程”?只有当远程服务器名称包含无效的标识符字符时,才需要该名称周围的方括号,就像SQL中的任何其他名称一样。我在工作中经常看到这一点,因为我们有很多服务器的名称中都有连字符,这需要括号,因此人们最终会将它们用于所有服务器名称,这是不必要的丑陋,我认为。请参阅我的答案,了解从存储过程中提取服务器名称的方法。这样,您就可以在环境之间移动代码,而不必修改引用本身。此外,如果所讨论的存储过程属于数据库所有者,则倒数第二部分仅是数据库所有者(dbo)。在大多数设计中是这样的,但更正确的规范应该是ObjectOwnerName。@Paul-完全正确,我应该提到同义词,因为我们以前在这里被咬过@P爸爸-根据您的第二条评论修改。这只是一个简单的命名结构。同义词应该是一个最佳实践,硬编码一个由4部分组成的名称只是自找麻烦+1@Daytona250:没错,但知道功能可用始终是问题所在。只有一位新的DBA进入了我以前的角色,才向团队强调了这一点。在此之前,我们认为硬编码链接是唯一的选择。
EXEC [RemoteServer].DatabaseName.ObjectOwnerName.StoredProcedureName