发布
社区首页 >问答首页 >用ReadOnly连接Python中的Server

用ReadOnly连接Python中的Server
EN

Stack Overflow用户
提问于 2022-04-25 21:05:57
回答 1查看 614关注 0票数 0

我正在尝试使用pyodbc连接python中的SQL服务器。我无法连接,因为我的数据库是ReadOnly。我尝试了other link提供的解决方案

代码语言:javascript
代码运行次数:0
复制
import pyodbc
readonly_conn_str = "DRIVER={SQL Server};SERVER=...; DATABASE=...;readonly=True;"

conn = pyodbc.connect(readonly_conn_str)

但是,我仍然收到以下错误:

ProgrammingError:(“42000”,“42000ODBCSQLServer DriverThe目标数据库('PRMOperationalDB')”位于可用性组中,当应用程序意图设置为只读时,当前可供连接访问。有关应用程序意图的详细信息,请参阅Server联机丛书。(978) (SQLDriverConnect);42000ODBCSQLServer DriverInvalid连接字符串属性(0);42000ODBC Server目标数据库('PRMOperationalDB')位于可用性组中,当应用程序意图设置为只读时,可对连接进行访问。有关应用程序意图的详细信息,请参阅Server联机丛书。(978);42000 string DriverInvalid连接字符串属性(0)“

对于如何解决这个问题,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-25 21:19:19

readonly=True是pyodbc的connect()方法的一个属性,而不是传递给Server的连接字符串的一部分。IMHO只尝试传递所有属性,而不是构建完整的连接字符串:

代码语言:javascript
代码运行次数:0
复制
conn = pyodbc.connect(driver='{SQL Server}', host=<server>, database=<db>,
  trusted_connection='yes', user='', password='', readonly = True)

或者,就像the answer you mentioned提供的那样,使用:

代码语言:javascript
代码运行次数:0
复制
conn = pyodbc.connect('driver={ODBC Driver 17 for SQL Server};'
  + 'SERVER=...;DATABASE=...;'
  + 'UID=' + user + ';PWD=' + password + ';'
  + 'ApplicationIntent=ReadOnly')

另外,您是否有意显式地连接到辅助设备?为什么不连接到AG名称,如果您的应用程序只执行读取操作,那么最糟糕的情况(比如说,有人破坏了只读路由)是,这些读取操作发生在主服务器上。您的代码永远不应该连接到特定的物理主机/集群节点,并假定它永远是只读的辅助节点.如果明天有故障转移会发生什么?谁在更新所有的连接字符串?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72005745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档