如何从存储过程中获取远程服务器视图的结果(也传递参数)?
视图位于与存在过程存在的当前服务器不同的服务器中。
感谢。
答案 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进行一次简单的更改,您的所有代码都将继续工作。