4

我想知道如何在 SQL 脚本中从另一个 SQL Server 实例的表中查询数据。

我正在编写运行的 sql 脚本,127.0.0.1\SQLINSTANCE1但在脚本内部将选择数据,127.0.0.2\SQLINSTANCE2然后返回结果数据作为计算的一部分。

谷歌搜索后,似乎使用sp_addlinkedserversp_addlinkedsrvlogin存储过程来做到这一点,但不幸的是没有完整的示例工作。

我在这里有一些工作,但没有按预期工作。例如,当它再次执行时,会弹出一些错误,例如服务器已链接。但是我如何执行这个脚本来链接服务器然后放​​弃它呢?

DECLARE @remoteserver VARCHAR = '127.0.0.2\SQLINSTANCE2';

EXEC master.sys.sp_addlinkedserver  @server = @remoteserver
                                ,   @srvproduct = 'SQL Server';

EXEC master.sys.sp_addlinkedsrvlogin    @rmtsrvname = @remoteserver
                                    ,   @useself = 'false'
                                    ,   @locallogin = NULL
                                    ,   @rmtuser = 'sa'
                                    ,   @rmtpassword = 'password';

另一方面,如何为这个丑陋的远程服务器名称创建别名?我宁愿使用一些优雅的名字,比如 RSselect * from [RS].[db].[dbo].[table]

4

2 回答 2

2

你确实可以使用

OPENDATASOURCE

或者

OPENROWSET

请注意,您必须打开 ad hoc 分布式查询选项:

sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
于 2013-09-06T07:15:14.723 回答
1

您可以使用OPENROWSET,这样您就不必创建和删除链接服务器。

于 2013-09-06T07:02:38.063 回答