欺骗数据库连接是本地的,而不是远程的

我试图将我们的一个客户“按原样”连接到远程数据库而不是本地数据库,他们认为他们已经编写了这样的程序,但由于某种原因,程序在连接远程时崩溃数据库。 我没有源代码,所以我不能深入到比这更深的地方,公司不提供任何升级或自定义修改。 我可以通过SqlDbx和HeidiSQL成功连接到数据库,所以我知道服务器设置正确。

这就是为什么我需要find一种方法来欺骗端口1433上的远程连接,看起来像本地数据库连接到程序。 我想过编辑主机文件,但是如果我将本地主机绑定到127.0.0.1以外的IP,很可能会崩溃其他程序。

有任何想法吗?

更新:

我尝试过用其他方式解决这个问题,但是我已经尝试了所有我能想到的。

  • 这是所有程序的相同版本
  • TCP / IP工作,而不是本地主机上的命名pipe道,并与像sqldbx和heidisql sqlviewers的作品
  • 身份validation与sqlviewers一起使用
  • configuration只是数据库连接string所需的字段

我唯一能看到的就是在我无法控制的代码里面有一些限制。

本质上,你正试图解决似乎是别人不好的实现。 这对我来说似乎是合理的,有时候,这是必要的。 如果这个程序试图连接到一个数据库时确实“崩溃”,而不是另一个,相反,你知道,显示错误消息,这是相当薄弱的。

我有一个Linux的备用解决scheme(“redir”)…但不是Windows; 不过,我在Google机器上发现了这个:

http://www.vakuumverpackt.de/tcptunnel/

我刚刚用“Cygwin”版本testing了它 – 不需要安装,它有一个exe和一个DLL,它在我的Windows 7笔记本电脑上“正常工作”。 整洁的一点奖励,它有一个--log-to-stdout选项,与>结合成一个文件,logging从stream中嗅探的字节(可能是有趣的阅读)。 我没有一个SQL Server的方便,但我testing了一些其他的TCP服务,它似乎工作正常 – 它监听本地套接字,当连接进来,它连接到一个指定的套接字上远程机器,并将pipe道的两端连接在一起。 在1433年听,它“应该”做的伎俩。

无论如何,这是我的工具包。

虽然您当然可以使用SSH端口转发等技术来使远程监听TCP套接字看起来像本地一样,但可能不会有任何帮助。

如果你的客户端在连接时“崩溃”,那么很可能不会因为你正在使用不同的目标IP地址而停下来。

当连接到本地数据库时软件运行良好,但是远程数据库变得麻烦的原因可能有很多,包括但不限于

  • 版本问题
  • 使用不同的协议(命名pipe道与TCP / IP)
  • 身份validation问题(集成的身份validation可能在本地工作,但打破远程系
  • configuration问题

您应该将您的努力指向问题的诊断,而不是怀疑性的解决方法。