如何为 Azure SQL 上的弹性查询设置 CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly'?

How to set the CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly' for elastic queries on Azure SQL?

我正在使用弹性查询访问其他数据库。数据源是这样创建的:

CREATE EXTERNAL DATA SOURCE TheCompanyQueryDataSrc WITH (
    TYPE = RDBMS,
    --CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly',
    CREDENTIAL = ElasticDBQueryCred,
    LOCATION = 'thecompanysql.database.windows.net',
    DATABASE_NAME = 'TheCompanyProd'
);

为了减少数据库负载,只读副本已创建并应使用。据我了解,我应该添加 CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly' (在上面的代码中注释掉)。但是,我只得到 Incorrect syntax near 'CONNECTION_OPTIONS'

两个数据库(设置连接+外部表的数据库,另一个只读在同一台服务器上(thecompanysql.database.windows.net) .两者都设置了兼容杆SQLServer 2019(150).

我还应该设置什么才能使其正常工作?

CREATE EXTERNAL DATA SOURCE 语法不支持选项 CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly'。我们不能在语句中使用它。

如果你想实现只读请求,方法是请使用只有只读(db_reader)权限的用户帐户登录外部数据库。

例如:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH
  IDENTITY = '<username>' -- readonly user account,
  SECRET = '<password>' ;

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH
  ( TYPE = RDBMS ,
    LOCATION = '<server_name>.database.windows.net' ,
    DATABASE_NAME = 'Customers' ,
    CREDENTIAL = SQL_Credential
  ) ;

既然不支持这个选项,那我们就不能用elastic query了。使用 SSMS 连接到 Azure SQL 数据的唯一方法是这样的:

HTH.