如何连接到SQL Server中的其他服务器?

时间:2016-04-20 04:40:56

标签: sql sql-server stored-procedures

我们在一台服务器上有基础数据库,在另一台服务器上有其他数据库,我们需要连接它。

如何将它们与存储过程链接起来?

CREATE PROCEDURE link_sv
   @UserName nvarchar(max)='',
   @Password nvarchar(max)='',
   @Server nvarchar(max)='',
   @DataBase nvarchar(max)=''
AS
BEGIN
   -- how do it
   -- select [dbo].tbl1.*,@Server.@DataBase.tblUsers.Name from [dbo].tbl1 inner join @Server.@DataBase.tblUsers on [dbo].tbl1.ID=@Server.@DataBase.tblUsers.ID
 END
 GO

如何编写此程序?

我用它:

SELECT a.*
FROM OPENROWSET('SQLOLEDB','Data Source=hodb01; UID=MyLogin; PWD=MyPassowrd', 'select top 1 * from HQPMMPRD.dbo.item_master') AS a

但SQL Server阻止了对语句的访问

  

' OpenRowset / OpenDatasource'。此组件已关闭,作为此服务器安全配置的一部分。

主机服务器中的我的数据库。我无法访问和更改安全配置。

2 个答案:

答案 0 :(得分:2)

enable Ad Hoc Distributed Queries on SQL Server,您可以使用sp_configure在您的服务器上执行此类命令。

但这种数据查询最准确的方法是create linked server on SQL Server数据库实例。

然后,您可以在SQL脚本中使用以下语法

INSERT INTO [linkedserver].dbname.dbo.targetTable
SELECT column1, columnN FROM sourceTable

答案 1 :(得分:2)

使用链接服务器。 请按照以下步骤

  1. 服务器对象 - >链接服务器 - >新链接服务器

  2. 提供远程服务器名称。

  3. 选择远程服务器类型(SQL Server)。

  4. 选择安全性 - >     远程服务器的登录名和密码。

  5. 或, 您可以使用查询添加链接服务器。

    sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
         [ , [ @provider= ] 'provider_name' ]
         [ , [ @datasrc= ] 'data_source' ] 
         [ , [ @location= ] 'location' ] 
         [ , [ @provstr= ] 'provider_string' ] 
         [ , [ @catalog= ] 'catalog' ] 
    

    您只需创建一次链接服务器。创建链接服务器后,我们可以按如下方式查询:

    select * from LinkedServerName.DatabaseName.OwnerName.TableName