首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此版本的Server不支持“master..sysdatabases”

此版本的Server不支持“master..sysdatabases”
EN

Stack Overflow用户
提问于 2018-01-23 17:29:11
回答 1查看 3.7K关注 0票数 1

我正在尝试将我的烧瓶应用程序连接到Azure数据库,当我遇到这个错误时。我在上面找不到任何东西,任何帮助都将不胜感激。

代码语言:javascript
复制
pypyodbc.connect(
    Driver={SQL Server};Server=tcp:******.net,1433;Database=***;UID=***;PWD=***;
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 00:41:52

这个问题是由您的

  1. 吡咯烷酮
  2. 名为“Server”的古老ODBC驱动程序,以及
  3. Azure SQL

当pypyodbc试图通过pypyodbc.connect建立连接时,(很多!)它所做的事情是尝试确定您是否具有对数据库的只读或读写访问权限。它使用的ODBC调用由“Server”ODBC驱动程序转换为

代码语言:javascript
复制
select substring('NY',status/1024&1+1,1) from master..sysdatabases where name=DB_NAME()

显然Azure SQL不喜欢它。

相比之下,像“用于Server的ODBC驱动程序11”这样的更现代的ODBC驱动程序将相同的ODBC调用转换为

代码语言:javascript
复制
SELECT CASE DATABASEPROPERTYEX( DB_NAME(), 'Updateability') WHEN 'READ_ONLY' THEN 'Y' ELSE 'N' END

这可能更适合Azure SQL。

因此,您可以切换到较新的ODBC驱动程序,或者可以尝试使用pyodbc而不是pypyodbc,因为pyodbc在连接数据库时似乎不会查询数据库的RO/RW状态。

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

https://stackoverflow.com/questions/48407579

复制
相关文章

相似问题

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