我试图将我们的一个客户“按原样”连接到远程数据库而不是本地数据库,他们认为他们已经编写了这样的程序,但由于某种原因,程序在连接远程时崩溃数据库。 我没有源代码,所以我不能深入到比这更深的地方,公司不提供任何升级或自定义修改。 我可以通过SqlDbx和HeidiSQL成功连接到数据库,所以我知道服务器设置正确。
这就是为什么我需要find一种方法来欺骗端口1433上的远程连接,看起来像本地数据库连接到程序。 我想过编辑主机文件,但是如果我将本地主机绑定到127.0.0.1以外的IP,很可能会崩溃其他程序。
有任何想法吗?
更新:
我尝试过用其他方式解决这个问题,但是我已经尝试了所有我能想到的。
我唯一能看到的就是在我无法控制的代码里面有一些限制。
本质上,你正试图解决似乎是别人不好的实现。 这对我来说似乎是合理的,有时候,这是必要的。 如果这个程序试图连接到一个数据库时确实“崩溃”,而不是另一个,相反,你知道,显示错误消息,这是相当薄弱的。
我有一个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地址而停下来。
当连接到本地数据库时软件运行良好,但是远程数据库变得麻烦的原因可能有很多,包括但不限于
您应该将您的努力指向问题的诊断,而不是怀疑性的解决方法。