2

所以,我正在尝试使用 pymssql 从我的 Linux 机器连接到 SQL Server 数据库。只能从我公司的专用网络内部访问该数据库。它被设置为接受 SQL Server 身份验证,并且在我的 Windows 机器上,当我登录到 VPN 时,我能够连接和查询它(Cisco Anyconnect 是安装在 Windows 机器上的客户端)。

当在工作时插入互联网的 linux 机器上运行时,python 脚本可以正常工作。我还没有在我的 Windows 机器上尝试过(因为现在,我在那台机器上没有 python)。

在我家里的 linux 机器上,我下载了 OpenConnect,它似乎可以很好地建立 VPN 连接。当我在这台机器上运行我的脚本时,在 VPN 上,我成功连接到数据库。如果我在脚本中使用的测试查询是创建表或操作数据库中的数据,那么它可以工作。但是,我无法检索任何数据,即,如果我运行选择查询,我会得到 []。

(另外,也许值得一提的是,在弄清楚如何在我的 linux 机器上安装 VPN 客户端之前,我尝试做的第一件事就是 ssh从私有网络内的 Windows 机器到我的家庭 linux 机器,同时将我的家庭 linux 机器上的端口转发到 SQL Server 机器上的 1433。然后我没有使用 pymsswl.connect() 连接到 SQL SERVER 机器,而是连接到我的本地端口。实际上,在这种情况下,我观​​察到与通过 VPN 相同的行为。在这种情况下,我无法取回数据,我并不感到特别惊讶,因为它已经超负荷了,而且我可以看到 SQL Server 不知道在哪里发送数据......虽然我真的只是在那里推测......)

我还应该提到,当我在我的 Windows 机器上的 Cisco 文件夹中单击时,有一个“安全目录”,其中包含我不太了解的各种奇怪的东西。也许这些证书/指纹在起作用。

所以,我承认这里完全是菜鸟,并希望得到任何帮助。如果我说了一些毫无意义的话,或者如果有其他可能适用的信息,我会尽力澄清。

4

1 回答 1

0

您是否使用 SQL Server 身份验证登录?你是如何运行查询的?Sproc 具有隐含的权利,这意味着如果您使用无权访问它的表仍然可以工作,但执行简单的选择将拒绝访问,远射但谁知道。

这是一个链接,其中 Pinal Dave 谈到了类似的错误,并详细介绍了如何检查以确保实例已启动以及您应该尝试的许多其他故障排除步骤。http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-服务器-microsoft-sql-server-error/

于 2013-11-12T12:54:40.563 回答