【问题标题】:Connect to database in Remote machine - python - SQL Server连接到远程机器中的数据库 - python - SQL Server
【发布时间】:2019-12-31 13:19:37
【问题描述】:

我有一个数据库服务器,可以通过远程桌面登录到服务器机器来访问它。这是我们手动执行的操作:

使用远程桌面从本地登录机器。 在连接的机器上打开数据库客户端。 然后连接数据库。

现在,我需要使用 python 连接到这个数据库。

我已经尝试过什么?.. 以下适用于我没有远程连接的所有数据库。

conn = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};SERVER=<server name>;database=<DB name>;UID=<user>;PWD=<pwd>")

错误:

pyodbc.OperationalError: ('08001', u'[08001] [Microsoft][ODBC Driver 17 for SQL Server]命名管道提供程序:无法打开与 SQL 服务器 [53]。 (53) (SQLDriverConnect); [08001] [微软] [ODBC Driver 17 for SQL Server]登录超时已过期(0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]网络相关或 建立连接时发生特定于实例的错误 到 SQL Server。服务器未找到或无法访问。检查是否 实例名称是正确的,并且如果 SQL Server 配置为允许 远程连接。有关详细信息,请参阅 SQL Server 联机丛书。 (53)')

【问题讨论】:

  • 我无法直接连接到它。我需要远程登录一台机器,然后在那里打开 SQL 助手客户端以手动访问它。
  • 在大多数情况下,两台服务器/计算机将位于同一网络中,并且可以通过 IP 相互通信。我有一个类似的设置,我通过 RDP 访问 SQL 服务器,但由于它们在同一个网络中并且之间没有防火墙,我可以运行 python 脚本通过其主机名访问 SQL 服务器并远程运行查询

标签: python sql-server


【解决方案1】:

在 python 中使用以下代码之前,您必须按照本指南配置您的 SQL 服务器https://knowledgebase.apexsql.com/configure-remote-access-connect-remote-sql-server-instance-apexsql-tools/

注意:1434 是我在入站规则中的 UDP 端口

conn = pyodbc.connect('DRIVER={SQL Server};SERVER = your_server_ipv4,1434;DATABASE=B_SQL;UID=sa;PWD=123456;')

cursor = conn.cursor()
#cursor.execute("DELETE FROM my_table") 
for index, row in df.iterrows():
    #print(row)
    cursor.execute("INSERT INTO my_table([Name],[Volume]) values(?,?)", row['Name'], row['Volume']) 

conn.commit()
cursor.close()
conn.close()

对我来说效果很好!

【讨论】:

    【解决方案2】:

    您能否从其他应用程序(包括 Excel)连接到您的 SQL Server?

    如果你不能,我会检查以下内容:

    1. 远程进入服务器并打开 SQL Server 配置管理器。

      应该有一个标有 SQL Server 网络配置的部分,其中包含“Protocols for”条目。如果单击该条目,您将看到为您的数据库启用了哪些协议。

    2. 单击 TCP/IP 并选择属性。在 IP 地址下,列出的每个 IP 可能都需要列出一个端口。

    3. 完成后,请确保在服务器上的防火墙中为入站和出站启用了该端口。

    当我管理一个 SQL 驱动的应用程序时,我们通常会在出现其他连接问题(例如防火墙问题或 SQL Server Browser 或实例未运行)时收到命名管道错误。

    如果这不足以解决问题,MSSQL Tips 上还有很多其他选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多