如何执行从 Azure 云数据库到本地服务器数据库的跨服务器查询

How to perform cross-server queries from Azure Cloud Database to On Premise Server Database

目标

创建从 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?不确定我在这里遗漏了什么...

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

你不能这样做..但你可以做其他事情

假设您的 Azure 服务器名称是 AZ,本地服务器名称是 B...您可以在 B 中为 AZ 创建链接服务器并从 B 查询 AZ