我已经尝试过,并且无法联系到。我可以使用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
正如ckarst第二个链接中所指出的,有一个有效的解决方案。我在这里发布它是为了省去搜索它的麻烦。正如JuanPableJofre在本页中所建议的那样Azure feedback:
使用SQL 2014,我能够在本地SQL服务器和SQL Azure之间进行分布式查询。首先,我创建了一个Linked-Server:
在安全选项中:(*)
在SSMS中输入以下测试查询:
use [Local_DB]
go
Select *
from [LinkedServerName].[RemoteDB].[dbo].[Remote_Table]
它工作得很漂亮!!
总而言之,链接服务器是在本地数据库上创建的。目录(数据库名称)很重要,因为Azure可能不允许您在查询中指定它(即:使用azureDBName在Azure上不起作用),因此数据库名称必须在目录中。
遗憾的是,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
虽然Azure DB不支持定义链接服务器,但您可以使用最近预览的弹性查询功能来定义“外部数据源”,它只是另一个Azure DB数据库,并定义“外部表”,它们是对外部表的引用数据库。然后,您可以查询它们,就像它们是本地对象一样。这与Linked Server概念非常相似,详细描述了here。
N'[用户名]'应该是这样的
用户名@服务器