我正在尝试使用pyodbc登录到Azure sql服务器,该服务器将我记录在主数据库中,而不是在连接字符串中提供的userdb之类的“ xyzdb”。解决方案似乎已更改为基于DSN的基于较少登录名的登录,该登录需要在Windows计算机上配置dsn。 但是我需要通过Azure webjob与pydbcc连接运行python脚本,因此无法配置dsn。因此,无法按预期使用用户数据库。有什么办法吗? 登录到主数据库后,我想使用“ USE xyzdb;”更改为用户数据库; azure sql服务器响应“无法使用USE在数据库之间切换”的sql命令,因此无法进行xyzdb登录。我被困住了:)。
答案 0 :(得分:0)
我用xyzdb数据库制作了Azure SQL服务器。然后我尝试为新创建的服务器连接字符串: pyodbc.connect('Driver = {SQL Server的ODBC驱动程序13}; Server = tcp:abc.database.windows.net,1433; Database = xyzdb; Uid = ur_username; Pwd = ur_password; Encrypt = yes; TrustServerCertificate = no; Connection Timeout = 30;')
此连接字符串使我在masterdb中登录,而不是在xyzdb中登录。而且由于Sql Server物理上保持在堆栈中,所以在数据中心中互连并不是每次都可行,除非使用某些东西作为池弹性。因此,“使用xyzdb;”主数据库中的Sql语句提供了“不能将USE用于数据库之间的切换”。
我用其他方法尝试了3天,但是没有成功,所以我发布了问题。然后我尝试将连接字符串作为:
pyodbc.connect('Driver = {用于SQL Server的ODBC驱动程序13}; Server = tcp:abc.database.windows.net,1433; Uid = ur_username; Pwd = ur_password; Encrypt = yes; TrustServerCertificate = no; Connection Timeout = 30; Database = xyzdb')
在字符串末尾移动“数据库”字段,认为它将首先与服务器建立连接,然后将我登录到数据库xyzdb中,并将其登录到xyzdb数据库中。它本身是第一次运行。
现在,如果我尝试使用2个字符串中的任何一个,如预期的那样。不知道是什么问题?。好像我也浪费了别人的时间:)。我们可以删除我假定的问题,因为我可以登录userdb。谢谢。