2017-07-19 35 views
0

我們有一個購買的商業應用程序訪問一個指定的本地安裝的SQL服務器實例。透明地指向遠程服務器的SQL Server本地實例?就像一個命名實例遠程代理

有沒有什麼辦法讓我們透明移動DB到遠程共享SQL Server主機,但仍然有SQL Server中配置的東西,這樣的本地軟件,因爲它它是一個本地實例訪問?

請記住,由於它是一個購買的軟件包,因此我無法修改它正在運行的查詢,因此如果表必須更改爲完全限定或其他特殊T-SQL語法才能使其工作,這不是一個選項。

有效,我們需要「帽子戲法」的應用程序來使用遠程數據庫,但訪問,就好像它是一個本地實例(儘管配置,某種代理的,或者是黑暗魔法)。

的應用DB的配置設置的總程度是選擇連接的本地實例的名稱,如圖該圖像中:enter image description here

SQL服務器安裝在本地計算機(Win2012R2x64)上,並具有運行幾個實例。我完全控制了本地的&遠程SQL服務器,因此可以對其進行不受限制的配置更改。當前的數據庫版本是SQL2014,但是如果需要更新的版本功能,則可以升級到更新版本。

+1

我猜沒有,但我有興趣看到掛羊頭賣狗肉,人們可以拿出。我不得不問,**爲什麼**? – scsimon

+0

您是否嘗試過使用遠程服務器中的名稱複製表結構的視圖(到遠程服務器)創建本地實例(相同的數據庫名稱)? – DaniDev

+0

我想應用程序可能使用命名管道來訪問本地數據庫服務器,但如果它會回退到使用tcp/ip連接,您可以嘗試一個簡單的端口轉發實用程序 - tcp轉發,而不是MSSQL轉發。 SSH將在一個捏,但毫無疑問更簡單的選項。 – Harun

回答

0

這取決於什麼樣的接入的商業應用程序在本地安裝的數據庫需要,一旦應用程序已經建立並創建它的數據庫。

您可能會使嘗試中的任何支持協議失效。更糟糕的是,如果一個商業應用堅持使用本地實例,那麼我就不敢去想在你的共享實例中它會堅持什麼安全恐怖。

你需要分析的數據庫,而應用程序的功能是用來找出它做什麼,它是如何做到的。即使您確定安全權限可能受到很大限制,您可能會發現應用程序會檢查它是否具有更高的權限級別。

我已經沒有辦法來測試這種方法,但手....

  • 在本地實例上安裝的應用程序像往常一樣,這將是你的本地實例
  • 備份數據庫,並將數據庫恢復到遠程實例。記得設置什麼登錄是必要的。
  • 將本地實例上的鏈接服務器設置爲遠程實例。
  • 刪除本地數據庫實例中的所有對象
  • 爲指向遠程實例的所有對象創建sysnonyms。

如果它是隻需要直接訪問表這可能工作的應用程序。然而它是ABOMINATION

+0

同意,這種設置將是一種可恥的。我不知道鏈接和同義詞的內部工作原理,但是當使用DB對象同義詞時,它確實會將查詢推送到遠程引擎並僅返回結果集,或者只是簡單地導致本地實例從表中卸載所有數據並在本地所以它可以在本地進行連接等等。我認爲它會做一些事情,比如當MS Access用戶天真地將鏈接表設置爲ODBC源並嘗試將MDB中的一個小表連接到遠程表時(當然,它永遠不會結束!) – NumericOverflow

1

您可以嘗試從本地sql server創建遠程sqlserver的別名。(通過Sql Server配置管理器|別名|添加一個新的別名)

您的本地實例別名應該是連接字符串用於連接的名稱服務器名稱。

我以前用這個方法來改變我連接到的sql實例而不改變任何連接字符串信息。

更多信息here

+0

我認爲這可能是正確的路徑,但我碰到了一個問題,我創建了SQLServer別名(包括x32和x64),但別名在列出本地實例時似乎沒有得到廣告。在mgmt工作室中,我可以連接到別名,但在使用應用程序時,別名未列爲可用選項。另外,當我去「瀏覽服務器 - >本地服務器」時,只顯示真實的實例,但不顯示我創建的別名。思考? – NumericOverflow

+0

其他說明:[1]該應用程序似乎通過共享內存協議連接,[2]該應用程序似乎只接受(或顯示連接選項)瀏覽服務器/本地服務器可見的實例。 – NumericOverflow

相關問題