【发布时间】:2011-10-02 16:24:02
【问题描述】:
我的机器上有一个名为“Test”的本地数据库,其中包含一个名为“Tags”的表。我可以通过 SQL Server management studio 2008 访问这个数据库并从这个表中查询。
但是,在使用 pyodbc 时,我一直遇到问题。
使用这个:
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost:1433;DATABASE=Test')
产生错误:
pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection. (14) (SQLDriverConnectW); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()). (14)')
(指定或不指定端口)
尝试替代连接字符串:
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost\Test,1433')
不会产生错误,但是:
cur = conn.cursor()
cur.execute("SELECT * FROM Tags")
产生错误:
pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Tags'. (208) (SQLExecDirectW)")
为什么会这样?
【问题讨论】:
-
你还尝试过哪些其他组合?
-
好吧,我从外部服务器复制了这个数据库,当我尝试连接到该服务器时,这个连接字符串(没有端口规范)起作用了。即,“DRIVER={SQL Server};SERVER=DB-TEST-SRV;DATABASE=Test”没有产生错误,并且以我上面指定的方式查询产生了没有错误的预期结果。