Azure sql database 我需要将链接服务器添加到MS Azure SQL server

Azure sql database 我需要将链接服务器添加到MS Azure SQL server,azure-sql-database,server,linked-server,Azure Sql Database,Server,Linked Server,我试了又试,都联系不上了。我可以使用SSMS连接到服务器,但无法从本地服务器链接到服务器。这是我的脚本(用相关信息替换括号中的内容): 不幸的是,SQL Azure DB不支持链接服务器。 但是,正如您在下面的论坛链接中所看到的,Microsoft已经意识到了这种情况,并且已经听取了客户的反馈 虽然Azure DB不支持定义链接服务器,但您可以使用最近预览的弹性查询功能定义一个“外部数据源”,它只是另一个Azure DB数据库,并定义引用该外部数据库中的表的“外部表”。然后可以像查询本地对象一

我试了又试,都联系不上了。我可以使用SSMS连接到服务器,但无法从本地服务器链接到服务器。这是我的脚本(用相关信息替换括号中的内容):


不幸的是,SQL Azure DB不支持链接服务器。


但是,正如您在下面的论坛链接中所看到的,Microsoft已经意识到了这种情况,并且已经听取了客户的反馈

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

如《第二链接》中所述,有一种解决方案可以工作。我把它贴在这里是为了省去你找它的麻烦。JuanPableJofre在本页中建议:

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

  • 链接服务器(名称):LinkedServerName
  • 提供程序:用于SQL Server的Microsoft OLE DB提供程序
  • 产品名称:(空白)
  • 数据源:azure-db.database.windows.net
  • 提供程序字符串:(空白)
  • 位置:(空白)
  • 目录:db名称
在安全选项中:(*)

  • 可以使用此安全上下文创建
  • 远程登录:azure用户名
  • 密码:yourPassword
在SSMS中,输入以下测试查询:

它工作得很好


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

N“[username]”应该是这样的

username@servername

-- Make a link to the cloud
EXEC sp_addlinkedserver   
     @server='[servername].database.windows.net',   -- specify the name of the linked server    
     @srvproduct=N'Azure SQL Db',
     @provider=N'SQLNCLI', 
     @datasrc='yourservername',             -- add here your server name   
     @catalog='FCS';
GO

--Set up login mapping
EXEC sp_addlinkedsrvlogin 
    @rmtsrvname = '[servername].database.windows.net',   
    @useself = 'FALSE', 
    @locallogin=NULL,
    @rmtuser = 'username',
    @rmtpassword = 'password'
GO

这确实会在我的环境中创建一个链接服务器,但是它不会连接到我指定的目录(FCS)。由于某种原因,它连接到默认值。是否有什么地方我做错了

根据本文,Enterprise Edition支持链接服务器:可以从SQL server Enterprise Edition(当然也可以是dev Edition)建立到SQL Azure的链接服务器。查看你发布的第二个链接中的评论。是的,效果很好。诀窍是填充ssms对话框(正如Phillippe所描述的),而不是让它接受默认值——这是我以前从未想过要尝试的。。伟大的提示,谢谢分享!azure用户名指的是什么用户名?我已尝试与服务器管理员联系,但无法连接。由于登录请求“无法打开数据库”XXX,登录失败。“。我保证凭据是正确的,因为我可以使用这些凭据直接连接,但是系统管理员的名称不是sa,密码包含特殊字符,如?@Mihail Shishkov azure用户名是您的azure sql用户名。请确保在“目录”字段中输入azure数据库名称。@Philippe您是对的,我拼错了数据库名称(目录)。请告诉其他可能阅读此内容的人:您也可以使用“SQL Server本机客户机”而不是“Microsoft OLE DB Provider”@MihailShishkov-FYI,我在使用本机客户机时出错,但当我将其切换到OLE DB时,我的事务工作正常。大多数人可能希望按照菲利普回答中所述的步骤进行操作。我使用SQL Local DB 2014和Azure SQL 12。
use [Local_DB] 
go

Select *
from [LinkedServerName].[RemoteDB].[dbo].[Remote_Table] 
-- Make a link to the cloud
EXEC sp_addlinkedserver   
     @server='[servername].database.windows.net',   -- specify the name of the linked server    
     @srvproduct=N'Azure SQL Db',
     @provider=N'SQLNCLI', 
     @datasrc='yourservername',             -- add here your server name   
     @catalog='FCS';
GO

--Set up login mapping
EXEC sp_addlinkedsrvlogin 
    @rmtsrvname = '[servername].database.windows.net',   
    @useself = 'FALSE', 
    @locallogin=NULL,
    @rmtuser = 'username',
    @rmtpassword = 'password'
GO