azure - Azure SQL“弹性数据库查询”是否允许连接到本地 SQL Server 数据库?
问题描述
我想从 Azure SQL 数据库查询本地 SQL Server。这个答案似乎表明我可以使用“弹性数据库查询”功能来做到这一点。
但是,我所读到的关于“弹性数据库查询”的所有内容都只提到了连接到另一个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 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
这可能是我的本地 SQL Server 上的配置设置有问题,但我猜测“弹性数据库查询”更有可能只是没有连接到本地数据源。
解决方案
弹性数据库查询在 Azure SQL 数据库之间工作,并且仅用于查询 Azure SQL 数据仓库。从您描述的场景的体系结构角度来看,如果弹性查询允许为本地 SQL Server 实例创建外部数据源,Azure 将依赖其基础架构之外的服务器来满足查询。更好的架构可能是使用 SQL 数据同步将本地数据库复制到 Azure SQL 上的中心数据库,然后使用该中心数据库创建弹性查询。即使从性能的角度来看也更有意义,因为查询不会针对您的本地数据库执行,并且延迟将不是一个因素。
推荐阅读
- compilation - 由于 z,我无法编译此 VHDL 代码,但我不知道为什么以及如何修复它
- javascript - Javascript(数组+document.getElementById)
- c# - SignalR:单一与不同客户端方法的单一与不同 dto 类型
- flutter - Flutter:无法将 DropdownButton 选择 UI 更新为 AlertDialog
- macos - 带有 NavigationView 的 MacOS 应用程序上的 SwiftUI 核心数据崩溃
- angular - 在 microsoft edge 上工作时日期不同,但在 Chrome 或 Firefox 上工作时正确
- fish - 没有可用的手册页,即使那里很清楚
- r - 使用服务主体和 R 将 Azure Databricks 连接到 SQL 数据库
- mysql - WHERE 子句中的 AES_DECRYPT
- sql - 是否有一个 SQL 函数可以让我们将条件置于 WHERE 子句之上?