2017-07-25 60 views
1

我工作的一部分涉及數據收集,以幫助調整可轉移到雲端的工作負載。其中的一個要素是能夠在客戶端環境中枚舉SQL實例以獲取洞察,例如「嘿,您有一些支持遺留SQL的應用程序,這些應用程序在幾年前就已經分解了,這是怎麼回事?」是否可以清點在Docker中運行的MSSQL-Linux?

隨着SQL Server 2017的發佈,我剛剛在Linux容器上創建了SQL Server Enterprise 2017實例(使用this image),我在Windows 10本地運行。我可以通過連接到實例SSMS和SELECT @@ VERSION確認它是合法的,但是我的問題是如果可以清點設備並在不知道連接字符串的情況下找到SQL實例。

事情我已經嘗試:

- 運行在Windows 10,所以我認爲這是通過Hyper-V的支持,當我嘗試去通過在Hyper-V管理器連接到虛擬機多克爾紡起來,無法獲得任何接口(我認爲,因爲Docker模擬的應用程序而不是完整的虛擬機)

- 從Win10主機設備做了一個sqlcmd -L,沒有看到實例(沒有安裝在Windows 10設備上的SQL我正在運行這個)

- 我可以通過docker ps找到docker鏡像,然後exec -it到bash,然後從那裏使用sqlcmd ,但是sqlcmd -L在Linux中沒有被列爲選項。

-ipconfig從主機設備顯示Docker的IP地址,但它不會給我端口信息,所以我將不得不掃描所有感覺髒的端口。

在這一點上我有點虧本。如果我沒有明確知道Docker容器正在運行MSSQL-Linux,那麼有什麼辦法可以通過清點主機設備來識別嗎? (抱歉長後)

+1

就這樣,我明白這一點;你有一臺Windows 10機器。在該Windows 10機器上,您正在運行Linux VM。那麼你想詢問Windows上該虛擬機的SQL版本嗎? – Xedni

+0

@Xedni是的,抱歉有任何含糊之處。我在運行此映像的Windows 10上:https://hub.docker.com/r/microsoft/mssql-server-linux/,我將更新問題以增加該清晰度。通常,對於Windows設備,我會在主機/ VM上查看服務或添加 - 刪除程序,但不知道如何使用Linux容器來解決這個問題。 – Polymergraphy

回答

0

敲打我的腦袋上了一會兒後,我發現一個痛苦的解決方法:

使用連接到容器的慶典:docker exec -it <container_name> "bash" 然後使用ps aux | grep sql列出所有的SQL進程。 MS映像從本地測試顯示爲/ opt/mssql/bin/sqlservr。一旦SQL已被確定,你可以嘗試使用從ipconfig泊塢窗的IP和端口連接到它從docker ps

這不是優雅,但它應該能夠自動化這些步驟在一組未知設備的使用。

爲了更好的選擇,請稍等一下。

相關問題