欺騙數據庫連接到本地而不是遠端
我正在嘗試將我們的一個客戶端程序“按原樣”連接到遠端數據庫而不是本地數據庫,他們認為他們已經將其編碼為以這種方式工作,但由於某種原因,程序在嘗試連接到遠端時崩潰數據庫。我沒有原始碼,因此我無法真正深入探勘,而且該公司不提供任何升級或自定義修改。我可以通過 SqlDbx 和 HeidiSQL 成功連接到數據庫,所以我知道伺服器設置正確。
這就是為什麼我需要找到一種方法來欺騙埠 1433 上的遠端連接,使其看起來像與程序的本地數據庫連接。我考慮過編輯主機文件,但如果我將 localhost 綁定到 127.0.0.1 以外的另一個 IP,它很可能會使其他程序崩潰。
有任何想法嗎?
更新:
我已經嘗試過像建議的其他方式來解決它,但我已經嘗試了我能想到的一切。
- 這是所有程序的相同版本
- TCP/IP 在 localhost 上工作而不是命名管道,並與 SqlDbx 和 HeidiSQL 等 sqlviewer 一起工作
- 身份驗證適用於 sqlviewers
- 配置只是數據庫連接字元串需要的欄位
我唯一能看到的是程式碼內部有一些我無法控制的限制它。
從本質上講,您正在嘗試解決似乎是其他人的錯誤實施的問題。這對我來說似乎是合理的,有時,這是必要的。如果這個程序在嘗試連接一個數據庫而不是另一個數據庫時確實“崩潰”了,而不是,哦,你知道的,顯示一條錯誤消息,那是相當弱的。
我在Linux(“redir”)中有一個備用解決方案……但不是Windows;但是,我在 Google 機器上發現了這個:
http://www.vakuumverpackt.de/tcptunnel/
我剛剛使用“Cygwin”版本對其進行了測試——無需安裝,它有一個 exe 和一個 DLL,它在我的 Windows 7 筆記型電腦上“剛剛工作”。整潔的小獎勵,它有一個
--log-to-stdout
選項,結合>
到一個文件中,記錄從流中嗅到的字節(可能是有趣的閱讀)。我手邊沒有 SQL Server,但我用其他一些 TCP 服務對其進行了測試,它似乎按預期工作——它偵聽本地套接字,當連接進入時,它會連接到指定的套接字一台遠端機器,並將管道的末端連接在一起。聽 1433,它“應該”解決問題。無論如何,它都在我的工具箱中。