创建和删除链接服务器只是为了执行远程查询有哪些问题?

时间:2010-09-07 08:32:58

标签: sql-server sql-server-2008 linked-server

我需要从远程数据库中检索一些数据,它是一种“更新管理器”,因此我的应用程序将连接到该远程服务器以检查是否有新的更新。

我使用网络服务器进行“握手和验证”工作,但后来我直接连接到远程sql服务器来检索数据。

网络服务器将返回登录信息(serverIP +端口,数据库,用户和密码),当然用户是具有datareader(在表的子集上)权限的用户。

我需要做的是执行一些远程查询以检索所需的数据。这就是我写的(并且有效):

CREATE PROCEDURE QueryRemoteServer 
      (@SERVER nvarchar(50),@FieldNames nvarchar(500), @DB nvarchar(50),
       @Tablename nvarchar(100), @Login Nvarchar(50),@pwd Nvarchar(50))
AS
BEGIN
  /* Creation of Linked Server including the If exists check */
  if exists (Select name From sys.servers Where [Name]=@SERVER) 
  exec sp_dropserver @SERVER, 'droplogins' 
  exec sp_addlinkedserver @SERVER
  /* Creation of the login according to values returned from webserver */
  exec sp_addlinkedsrvlogin @SERVER, 'FALSE', NULL, @Login, @pwd
  /* exec the query (for simplicity I omitted the JOIN job) */
  exec ('SELECT ' +  @FieldNames + 
          ' FROM ['+ @Server + '].' + @Db + '.dbo.' + @Tablename)
  /* drop the created linked server */ 
  exec sp_dropserver @SERVER, 'droplogins' 
END

客户端只需运行以下内容:

exec QueryRemoteServer '127.0.0.1 , 4455','Field1, Field2',
           'MyRemoteDB','MyRemoteTable','GuestUser','GuestPassword'

请您告诉我您对此方法的看法,并告诉我您看到哪些主要缺点/好处?

1 个答案:

答案 0 :(得分:2)

您是否考虑过每次使用OPENROWSET而不是创建/删除链接服务器?