从存储过程执行驻留在远程服务器中的“View”

时间:2009-03-18 09:44:19

标签: sql-server

如何从存储过程中获取远程服务器视图的结果(也传递参数)?

视图位于与存在过程存在的当前服务器不同的服务器中。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以在存储过程中使用Linked Server feature SQL Server:

  

链接服务器配置允许   要执行的Microsoft SQL Server   针对OLE DB数据源的命令   在不同的服务器上链接服务器   提供这些优势:

     
      
  • 远程服务器访问

  •   
  • 发布分布式的能力   查询,更新,命令和   异构数据上的事务   整个企业的消息来源。

  •   
  • 同样能够处理各种数据源的能力。

  •   

您必须以这种方式在存储过程中编写查询,例如:

   SELECT * 
   FROM   MyRemoteServer.MyDB.dbo.MyView
   WHERE  MyViewColumnX = @ParameterY

答案 1 :(得分:0)

在主SQL Server上创建linked server,创建指向远程服务器的链接。

您在远程服务器上拥有视图这一事实很好,它为您的数据提供了一层抽象。您可以为有权读取该视图的链接服务器指定登录名。您还可以在将来修改视图(例如,添加“where”子句以提高性能),而无需更改前端。

我还会在主服务器上添加另一个视图,从远程服务器上的视图中进行选择: -

从RemoteServer.DB.dbo.RemoteView创建视图vwMain作为select col1,col2。

这样,您可以在整个代码中(在许多存储过程中)引用vwMain,而无需不断地引用远程服务器。这样,如果您的远程服务器发生更改或将数据移动到主服务器,则只需对vwMain进行一次简单的更改,您的所有代码都将继续工作。