'master..sysdatabases' 此版本的 SQL 服务器不支持
'master..sysdatabases' is not supported in this version of SQL Server
我正在尝试将我的 Flask 应用程序连接到 Azure 数据库,然后我遇到了这个错误。我在上面找不到任何内容,将不胜感激。
pypyodbc.connect(
Driver={SQL Server};Server=tcp:******.net,1433;Database=***;UID=***;PWD=***;
)
问题是由您的组合引起的
- pypyodbc
- 古老的 ODBC 驱动程序名为 "SQL Server",并且
- 蔚蓝SQL
当 pypyodbc 尝试通过 pypyodbc.connect
建立连接时,它所做的其中一件(很多!)事情是尝试确定您是否对数据库具有只读或读写访问权限。它使用的 ODBC 调用被 "SQL Server" ODBC 驱动程序翻译为
select substring('NY',status/1024&1+1,1) from master..sysdatabases where name=DB_NAME()
Azure SQL 显然不喜欢。
相比之下,更现代的 ODBC 驱动程序,如 "ODBC Driver 11 for SQL Server" 将相同的 ODBC 调用转换为
SELECT CASE DATABASEPROPERTYEX( DB_NAME(), 'Updateability') WHEN 'READ_ONLY' THEN 'Y' ELSE 'N' END
这可能更适合 Azure SQL。
因此,您可以切换到更新的 ODBC 驱动程序,或者尝试使用 pyodbc 而不是 pypyodbc,因为 pyodbc 在连接时似乎不查询数据库的 RO/RW 状态。
我正在尝试将我的 Flask 应用程序连接到 Azure 数据库,然后我遇到了这个错误。我在上面找不到任何内容,将不胜感激。
pypyodbc.connect(
Driver={SQL Server};Server=tcp:******.net,1433;Database=***;UID=***;PWD=***;
)
问题是由您的组合引起的
- pypyodbc
- 古老的 ODBC 驱动程序名为 "SQL Server",并且
- 蔚蓝SQL
当 pypyodbc 尝试通过 pypyodbc.connect
建立连接时,它所做的其中一件(很多!)事情是尝试确定您是否对数据库具有只读或读写访问权限。它使用的 ODBC 调用被 "SQL Server" ODBC 驱动程序翻译为
select substring('NY',status/1024&1+1,1) from master..sysdatabases where name=DB_NAME()
Azure SQL 显然不喜欢。
相比之下,更现代的 ODBC 驱动程序,如 "ODBC Driver 11 for SQL Server" 将相同的 ODBC 调用转换为
SELECT CASE DATABASEPROPERTYEX( DB_NAME(), 'Updateability') WHEN 'READ_ONLY' THEN 'Y' ELSE 'N' END
这可能更适合 Azure SQL。
因此,您可以切换到更新的 ODBC 驱动程序,或者尝试使用 pyodbc 而不是 pypyodbc,因为 pyodbc 在连接时似乎不查询数据库的 RO/RW 状态。