PYODBC无法连接到SQL Express实例

时间:2018-11-24 18:08:01

标签: python sql-server odbc pyodbc

我正在计算机上运行SQL Server Express 2017实例。我正在尝试使用以下连接字符串连接到它:

 in <module> .   ()
 ----> 1 import musdb

/usr/local/envs/py2env/lib/python2.7/site-packages/musdb/__init__.py in <module>()
      1 from __future__ import print_function
----> 2 from .audio_classes import Track, Source, Target
      3 from os import path as op
      4 from six.moves import map
      5 import multiprocessing

/usr/local/envs/py2env/lib/python2.7/site-packages/musdb/audio_classes.py in <module>()
      2 from __future__ import division
      3 import os
----> 4 import soundfile as sf
      5 import numpy as np
      6 import stempeg

/usr/local/envs/py2env/lib/python2.7/site-packages/soundfile.py in <module>()
    140     _libname = _find_library('sndfile')
    141     if _libname is None:
--> 142         raise OSError('sndfile library not found')
    143     _snd = _ffi.dlopen(_libname)
    144 except OSError:

OSError: sndfile library not found

我已经成功使用这些连接手动连接到服务器,并使用SQL Server Management Studio成功连接了SQL Server身份验证。

防火墙应该不是问题,因为它是本地托管的服务器,但是无论如何,我已经为入站和出站连接打开了端口1433。

过去,这种连接字符串格式已在Azure上托管的数据库中起作用(我再也负担不起)。

错误消息:

"Driver=ODBC Driver 13 for SQL Server;Server=COMPUTERNAME\\SQLEXPRESS,1433;Database=databasename;Uid=testuser;Pwd=testpassword;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"

还有其他建议吗?

1 个答案:

答案 0 :(得分:2)

我会回答这个问题,以防其他人发现它,即使它很旧。 对我来说效果很好的是:

  1. 找出 SQL Express 实例使用的端口(在我的例子中结果很好,'ol 1433)
  2. 使用 Network Library=DBMSSOCN 来避免有关命名实例的问题(无法以这种方式工作)

怎么样?

这样做: pyodbc.connect('driver={SQL Server Native Client 11.0};server='+DBIPAddress+';port='+DBPort+';Network Library=DBMSSOCN;database='+DBName+';uid='+DBUser+';pwd='+DBPass)

哪里

  • DBIPAddress 是 SQL Server 服务器的 IP 地址
  • DBPort 是端口
  • DBName 是您尝试连接的数据库的名称
  • DBUser 是您使用的用户名
  • DBPass 是密码

我猜你也可以使用 {SQL Server} 驱动程序,但我没试过。我们正在做的是强制使用 IP 和端口进行连接,而不管命名实例是否存在。