Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何设置连接选项=';applicationcontent=ReadOnly';对于Azure SQL上的弹性查询?_Sql Server_Azure Sql Database_Database Replication - Fatal编程技术网

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由于该选项不受支持,因此我们无法使用弹性查询连接到副本。请查看我的更新。如果我的答案对您有帮助,希望您能将其作为答案接受。这对其他社区成员有益。谢谢。