我正在尝试将Python连接到我们的远程SQL Server,但是我无法成功。以下是我使用的代码。
server = 'server,1433'
database = 'db'
username = 'username'
password = 'pw'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute('SELECT top 1 * FROM db.dbo.t_location')
for row in cursor:
print(row)
我们有两台服务器,一台是数据库服务器,但我使用应用服务器来连接到数据库服务器的 SQL。这是我遇到的错误。我已经尝试了一个星期,但我不确定我在这里错过了什么。 任何帮助将不胜感激。
操作错误:('08001', '[Microsoft] [ODBC Driver 17 for SQL Server] TCP 提供程序:没有这样的主机\r\n (11001) (SQLDriverConnect); [08001] [Microsoft] [ODBC Driver 17 for SQL Server] 登录超时(0); [08001] [Microsoft] [ODBC Driver 17 for SQL Server] 建立到 SQL Server 的连接时发生特定于网络或实例的错误。找不到服务器或无法访问。检查实例名称是否正确以及是否配置了 SQL Server 以允许远程连接。有关更多信息,请参阅 SQL Server Books Online。(11001)')
已添加:
connection_str = ("Driver={SQL Server Native Client 11.0};"
"Server= 10.174.124.12,1433;"
#"Port= 1433;"
"Database=AAD;"
"UID=dom\user;"
"PWD=password;"
)
connection = pyodbc.connect(connection_str) data = pd.read_sql("select top 1 * from dbo.t_location with (nolock);", connection)
我使用了上述代码,现在出现了这个错误。看起来好像它工作了,但是登录失败了。通常我必须在SSMS中使用Windows身份验证,一旦我输入我的凭据登录远程桌面。
('28000',"[28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user 'dom\user'. (18456) (SQLDriverConnect); [28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user 'dom\user'. (18456)")
回答:
我很高兴终于找到了一个使用pymssql的解决方案。我不知道为什么pyodbc不起作用,但我肯定是做错了什么。我使用以下代码来使用Python从远程SQL服务器获取数据。
import pymssql
conn = pymssql.connect(
host=r'10.174.124.12',
user=r'dom\user',
password=r'password',
database='db'
)
cursor = conn.cursor(as_dict=True)
cursor.execute('Select top 4 location_id, description from t_location with (nolock)')
data = cursor.fetchall()
data_df = pd.DataFrame(data)
cursor.close()
暂时忽略我的代码。我还需要进行一些清理,但这段代码是可行的。