所以,我有一個指向本地數據庫的SQL Server連接字符串:我可以透明地轉發SQL Server連接嗎?
數據源=;初始目錄= MyDatabase的;集成安全性=真
我不能改變這個連接字符串,但我希望SQL服務器能夠在其他地方居住。
是否有某種方式 - 無論是與SQL Server或操作系統中的東西,使這個可能嗎?我知道集成安全(又名Windows身份驗證)部分會使這非常困難,但我認爲如果有方法,值得一提。
所以,我有一個指向本地數據庫的SQL Server連接字符串:我可以透明地轉發SQL Server連接嗎?
數據源=;初始目錄= MyDatabase的;集成安全性=真
我不能改變這個連接字符串,但我希望SQL服務器能夠在其他地方居住。
是否有某種方式 - 無論是與SQL Server或操作系統中的東西,使這個可能嗎?我知道集成安全(又名Windows身份驗證)部分會使這非常困難,但我認爲如果有方法,值得一提。
如果客戶端軟件使用本地SQL客戶端(和幾乎所有做),你可以使用別名的SQL Server Configuration Manager任何服務器名稱。在Configuration Manager管理單元中,展開「SQL Native Client [版本]配置」項,右鍵單擊「別名」並選擇「新別名...」。有兩個這樣的項目,分別是32位和64位,別忘了將別名添加到這兩個地方。
使用這種權力謹慎。 任何服務器名稱包含特殊的名字,如.
和(LocalDB)\MyInstance
,通常只涉及到本地計算機,甚至不使用TCP/IP。對一個偶然的讀者來說,這些混淆可能會令人困惑。別名不區分大小寫,但必須完全匹配,所以添加空格或使用諸如localhost
而不是.
之類的名稱將會使其失敗。
只是爲了添加工具/客戶端等的版本。很重要:我確實在這臺機器上安裝了SQL Server 2016 SP1,只是沒有正在運行的實例(雙重檢查確實SQL Server確實關閉了,而且我真的達到了目標) – Henry
這個特殊的連接字符串很難,因爲「。」是本地機器的內置別名,並默認使用共享內存協議(完全繞過網絡堆棧)。我不認爲這可以被重定向,而是修補在運行時讀取連接字符串的代碼(這對於.NET來說比非託管代碼更現實一些,但仍然不容易)。對於實際的服務器名稱,您可以通過SQL Server配置管理器定義[別名](http://msdn.microsoft.com/library/ms190445),但我不認爲「。」。可以是別名(雖然我沒有測試過)。 –
@JeroenMostert謝謝!這實際上起作用 - 我可以將'.'別名到其他服務器。如果您將其添加爲答案,我可以接受它作爲理所當然的代表。 – Henry
那麼,今天我學到了一些新東西,即使我學到的東西有點可怕... –