我需要将链接服务器添加到MS Azure SQL Server

问题描述 投票:19回答:3

我已经尝试过,并且无法联系到。我可以使用SSMS连接到服务器,但无法从本地服务器链接到它。这是我的脚本(用括号替换相关信息):

EXEC master.dbo.sp_addlinkedserver
    @server     = N'[servername].database.windows.net',
    @srvproduct = N'Any',
    @provider   = N'MSDASQL',
    @datasrc    = N'Azure_ODBC1'
GO

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname  = N'[servername]',
    @useself     = N'False',
    @locallogin  = NULL,
    @rmtuser     = N'[username]',
    @rmtpassword = '[password]'

GO

azure-sql-database server linked-server
3个回答
28
投票

正如ckarst第二个链接中所指出的,有一个有效的解决方案。我在这里发布它是为了省去搜索它的麻烦。正如JuanPableJofre在本页中所建议的那样Azure feedback

使用SQL 2014,我能够在本地SQL服务器和SQL Azure之间进行分布式查询。首先,我创建了一个Linked-Server:

  • 链接服务器(名称):LinkedServerName
  • 提供程序:用于SQL Server的Microsoft OLE DB提供程序
  • 产品名称:(空白)
  • 数据源:azure-db.database.windows.net
  • 提供者字符串:(空白)
  • 地点:(空白)
  • 目录:db-name

在安全选项中:(*)

  • 使用此安全上下文
  • 远程登录:azure-user-name
  • 使用密码:yourPassword

在SSMS中输入以下测试查询:

use [Local_DB] 
go

Select *
from [LinkedServerName].[RemoteDB].[dbo].[Remote_Table] 

它工作得很漂亮!!

总而言之,链接服务器是在本地数据库上创建的。目录(数据库名称)很重要,因为Azure可能不允许您在查询中指定它(即:使用azureDBName在Azure上不起作用),因此数据库名称必须在目录中。


5
投票

遗憾的是,SQL Azure DB不支持链接服务器。 https://msdn.microsoft.com/en-us/library/azure/ee336281.aspx

但是,正如您从下面的论坛链接中看到的那样,Microsoft已了解该方案,并且已听到客户反馈。 http://feedback.azure.com/forums/217321-sql-database/suggestions/402636-cross-database-reference


2
投票

虽然Azure DB不支持定义链接服务器,但您可以使用最近预览的弹性查询功能来定义“外部数据源”,它只是另一个Azure DB数据库,并定义“外部表”,它们是对外部表的引用数据库。然后,您可以查询它们,就像它们是本地对象一样。这与Linked Server概念非常相似,详细描述了here


-1
投票

N'[用户名]'应该是这样的

用户名@服务器

© www.soinside.com 2019 - 2024. All rights reserved.