我正在尝试将我的烧瓶应用程序与Azure数据库连接,这是我遇到此错误的时候。我无法找到任何内容,任何帮助都会受到赞赏。
pypyodbc.connect(
Driver={SQL Server};Server=tcp:******.net,1433;Database=***;UID=***;PWD=***;
)
答案 0 :(得分:1)
问题是由您的
组合引起的当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驱动程序,如“用于SQL Server的ODBC驱动程序11”,将相同的ODBC调用转换为
SELECT CASE DATABASEPROPERTYEX( DB_NAME(), 'Updateability') WHEN 'READ_ONLY' THEN 'Y' ELSE 'N' END
这可能更适合Azure SQL。
因此,您可以切换到较新的ODBC驱动程序,也可以尝试使用pyodbc而不是pypyodbc,因为pyodbc在连接时似乎不会查询数据库的RO / RW状态。