Sql server 如何设置连接选项=';applicationcontent=ReadOnly';对于Azure SQL上的弹性查询?
我正在使用弹性查询访问另一个数据库。数据源是这样创建的:Sql server 如何设置连接选项=';applicationcontent=ReadOnly';对于Azure SQL上的弹性查询?,sql-server,azure-sql-database,database-replication,Sql Server,Azure Sql Database,Database Replication,我正在使用弹性查询访问另一个数据库。数据源是这样创建的: CREATE EXTERNAL DATA SOURCE TheCompanyQueryDataSrc WITH ( TYPE = RDBMS, --CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly', CREDENTIAL = ElasticDBQueryCred, LOCATION = 'thecompanysql.database.windows.net'
CREATE EXTERNAL DATA SOURCE TheCompanyQueryDataSrc WITH (
TYPE = RDBMS,
--CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly',
CREDENTIAL = ElasticDBQueryCred,
LOCATION = 'thecompanysql.database.windows.net',
DATABASE_NAME = 'TheCompanyProd'
);
为了减少数据库负载,创建了只读副本,应该使用它。据我所知,我应该添加CONNECTION\u OPTIONS='applicationcontent=ReadOnly'
(在上面的代码中注释掉)。但是,在“连接选项”附近,我只得到了不正确的语法
两个数据库(一个设置连接+外部表,另一个设置为只读)都位于同一台服务器上(companysql.database.windows.net)。这两个数据库都设置为SQL server 2019(150)
我还应该设置什么才能使其工作?语法不支持选项CONNECTION\u OPTIONS='applicationcontent=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
) ;
通过密码创建主密钥加密=“”;
创建数据库范围的凭据SQL\U凭据
具有
标识=“”--只读用户帐户,
秘密='';
创建外部数据源MyElasticDBQueryDataSrc
具有
(类型=关系数据库管理系统,
位置='.database.windows.net',
数据库名称='客户',
凭证=SQL\U凭证
) ;
由于不支持该选项,因此我们无法将其用于弹性查询。使用SSMS连接到Azure SQL数据的唯一方法如下:
HTH.谢谢您的帮助。不过,阅读文档时,语法应该是正确的()。我尝试这样做的原因不是限制对只读的访问。目的是使用数据库的只读副本。@pepr请注意,SQL server支持它,但Azure SQL不支持。选择一个产品选择SQL数据库可以找到差异。谢谢,这是有意义的。不过,目的实际上是将查询重定向到Azure SQL数据库的只读副本。我找不到如何执行该操作。@pepr由于该选项不受支持,因此我们无法使用弹性查询连接到副本。请查看我的更新。如果我的答案对您有帮助,希望您能将其作为答案接受。这对其他社区成员有益。谢谢。