如何从Azure云数据库到On Premise Server数据库执行跨服务器查询

时间:2017-10-31 16:56:28

标签: sql azure cross-database cross-server external-data-source

目标

创建从Azure服务器SQL数据库到内部部署服务器服务器数据库的查询。

此查询过去是使用来自两个本地服务器的链接服务器对象及其各自的数据库进行的。

我已经在Azure云服务器上的两个数据库之间成功完成了跨数据库查询。但是,我无法复制链接服务器对象可以在Azure服务器和内部部署服务器之间提供的类似方面。

当前场景

serverA 上,我已将链接服务器对象创建为 serverB 。我的两个本地服务器如下所示进行通信:

--serverA = on premise server
--serverB = on premise server
Using mycn As New SqlConnection("Data Source=serverA;Initial Catalog=DatabaseA;User Id=username;Password=pwd")
    Dim query As String = "SELECT * FROM [DatabaseA].dbo.tableA " &
                          "INNER JOIN [serverB].[DatabaseB].dbo.tableB ON tableA_ID = tableB_ID"
End Using

外部数据源

为了与我的内部部署服务器通信到我的Azure SQL服务器,我必须创建一个外部数据源...我相信我的问题依赖于我的外部数据源。

-- ===========================================================
-- Create external data source template for Azure SQL Database
-- ===========================================================
IF EXISTS (
  SELECT *
    FROM sys.external_data_sources
   WHERE name = N'serverB_DataSource'
)
DROP EXTERNAL DATA SOURCE serverB_DataSource
GO

CREATE EXTERNAL DATA SOURCE serverB_DataSource WITH
(
    TYPE = RDBMS,
    LOCATION = N'serverB',
    DATABASE_NAME = N'databaseB',
    CREDENTIAL = myCreds
)
GO

由于我尝试从Azure服务器访问名为 serverB 的内部部署服务器,我是否需要指定它的实际IP?不确定我在这里失踪了什么......

1 个答案:

答案 0 :(得分:2)

Since I am trying to access my on premise server called serverB from the Azure server

你不能这样做..但你可以采取其他方式

假设您的azure服务器名称为AZ且onpremises服务器名称为B ...您可以为B中的AZ创建链接服务器并从B查询AZ