【问题标题】:How can I connect to a different server in SQL Server?如何连接到 SQL Server 中的不同服务器?
【发布时间】:2016-04-20 04:40:55
【问题描述】:

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

如何将它们与存储过程联系起来?

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'。作为此服务器安全配置的一部分,此组件已关闭。

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

【问题讨论】:

标签: sql sql-server stored-procedures


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用链接服务器。 按照这些步骤操作

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

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

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

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

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

    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
    

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2021-08-09
      相关资源
      最近更新 更多