我们正在使用Azure的试用版.我们正在尝试从我们的sql 2012内部执行跨服务器查询.
我们似乎有我们的本地2012与Azure联系.当我进入服务器对象 – >管理工作室中的链接服务器,我看到我们的Azure数据库.
但是如果我尝试打开目录和表格,我会收到一条错误消息
在此版本的sql Server中不支持“Perseus.sys.sp_tables_rowset2”中的数据库和/或服务器名称
** Perseus是Azure sql中我们的目录的名称.
从本地连接运行查询:
SELECT * FROM [azureDBServer].[Perseus].[dbo].[accounts]
结果是:
OLE DB provider "sqlNCLI11" for linked server "azureDBServer" returned message "Unspecified error". Msg 40515,Level 16,State 2,Line 1 Reference to database and/or server name in 'Perseus.sys.sp_tables_info_90_rowset' is not supported in this version of sql Server.
同样在内部的sql 2012 Server能够通过跨服务器查询并通过链接服务器查看其结构来连接到我们内部的2008.
我从这篇文章知道Azure supports Linked Servers.
所以我失去了什么是错的.我们的管理员认为可能是我们有一个Web-sql帐户和一个商业sql帐户.这个Azure Web vs Business SQL过期的Stack链接意味着sql版本不是问题,而是Azure提供Linked Server之前的日期.
所以,我想知道是否
b)我们受到审判的限制?
c)是否受到Web sql版本的限制?
d)还有什么?
解决方法
从sql管理添加链接服务器时,您不会选择设置默认数据库.所以使用下面的东西
EXEC sp_addlinkedserver @server='name for referring locally',-- here you can specify the name of the linked server @srvproduct='',@provider='sqlncli',-- using sql Server native client @datasrc='AzureMachineName.database.windows.net',-- add here your server name @location='',@provstr='',@catalog='yourdatabasename'
我认为这是有用的.