【问题标题】:Does Azure SQL "Elastic Database Query" allow connections to an on-premises SQL Server database?Azure SQL“弹性数据库查询”是否允许连接到本地 SQL Server 数据库?
【发布时间】:2018-06-13 17:00:39
【问题描述】:

我想从 Azure SQL 数据库查询本地 SQL Server。 This 的回答似乎表明我可以使用“弹性数据库查询”功能来做到这一点。

但是,我所阅读的有关“弹性数据库查询”的所有内容都只提到了连接到另一个 Azure SQL 数据库,而不是本地 SQL Server 数据库。

我尝试通过依次运行这些语句来使用“弹性数据库查询”功能:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MY_SUPER_SECRET_PASSWORD';  

CREATE DATABASE SCOPED CREDENTIAL SSDB_On_Premises_Credentials    
WITH IDENTITY = 'MY_USERNAME',  
SECRET = 'MY_OTHER_SUPER_SECRET_PASSWORD';  

CREATE EXTERNAL DATA SOURCE SSDB_On_Premises WITH   
    (TYPE = RDBMS,   
    LOCATION = 'the.path.to.my.on.premises.database',   
    DATABASE_NAME = 'MyDatabaseName',    
    CREDENTIAL = SSDB_On_Premises_Credentials          
) ;     

CREATE EXTERNAL TABLE USER(
    ID INT NOT NULL, 
    FIRSTNAME NVarchar(255),
    LASTNAME NVarchar(255) NOT NULL
)
WITH
(
    DATA_SOURCE = SSDB_On_Premises 
);

SELECT * FROM USER;

但是,我收到此错误:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:命名 Pipes Provider,错误:40 - 无法打开与 SQL 的连接 服务器)

这可能是我的本地 SQL Server 上的配置设置有问题,但我猜测“弹性数据库查询”更有可能只是没有连接到本地数据源。

【问题讨论】:

    标签: azure azure-sql-database


    【解决方案1】:

    弹性数据库查询在 Azure SQL 数据库之间工作,并且仅用于查询 Azure SQL 数据仓库。从您描述的场景的体系结构角度来看,如果弹性查询允许为本地 SQL Server 实例创建外部数据源,Azure 将依赖其基础架构之外的服务器来满足查询。更好的架构可能是使用 SQL 数据同步将本地数据库复制到 Azure SQL 上的中心数据库,然后使用该中心数据库创建弹性查询。即使从性能的角度来看也更有意义,因为查询不会针对您的本地数据库执行,并且延迟将不是一个因素。

    【讨论】:

      【解决方案2】:

      没有。 CREATE EXTERNAL DATA SOURCE 的文档指定目标必须是 RDBMS 外部数据源的 Azure SQL 数据库:

      -- Elastic Database query only: a remote database on Azure SQL Database as data source   
      -- (only on Azure SQL Database)  
      CREATE EXTERNAL DATA SOURCE data_source_name  
          WITH (   
              TYPE = RDBMS,  
              LOCATION = '<server_name>.database.windows.net',  
              DATABASE_NAME = '<Remote_Database_Name>',  
              CREDENTIAL = <SQL_Credential>  
          )  
      [;]  
      

      新的(预览版)Azure SQL 数据库托管实例支持链接服务器连接到 SQL Server:

      链接服务器

      托管实例中的链接服务器支持有限 目标数量:支持的目标:SQL Server 和 SQL 数据库 不支持 支持的目标:文件、Analysis Services 和其他 RDBMS。

      Azure SQL Database Managed Instance T-SQL differences from SQL Serve

      托管实例还支持在专用 VNet 上运行,从该 VNet 连接到本地 SQL Server 实例是合理的。 Azure SQL 数据库将无法与您的本地服务器进行通信。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-17
        • 2023-04-05
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 2012-01-13
        • 1970-01-01
        相关资源
        最近更新 更多