Linux 和docker上的 SQL Server 的常見問題解答 (FAQ)
參考:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-faq?view=sql-server-ver15
常規問題
支持哪些 Linux 平臺?
SQL Server 目前在 Red Hat Enterprise Server、SUSE Linux Enterprise Server 和 Ubuntu 上受支持。 還支持使用 Docker 在容器中運行。 有關支持的版本的最新信息,請參閱支持的平臺。
Linux 上的 SQL Server 未來是否可以在其他平臺上運行?
SQL Server 在 Linux 上針對之前列出的發行版進行了測試且受支持。 其他 Linux 發行版密切相關并且可能可以運行 SQL Server(例如,CentOS 與 Red Hat Enterprise Server 密切相關)。 但是,如果選擇在不受支持的操作系統上安裝 SQL Server,請查看 Microsoft SQL Server 的技術支持策略的“支持策略”部分,以了解支持含義。 另請注意,如果基礎操作系統出現故障,一些社區維護的 Linux 發行版將沒有獲得支持的正式途徑。
Linux 與 Windows 上的 SQL Server 是否相同?
SQL Server 的核心數據庫引擎在 Linux 上與在 Windows 上是相同的。 不過,Linux 當前不支持某些功能。 有關 Linux 不支持的功能的列表,請參閱不支持的 功能 服務。 另請參閱已知問題。 除非在這些列表中指定,否則 Linux 均支持其他 SQL Server 功能和服務。
SQL Server 的支持策略是什么?
若要了解支持策略,請參閱 SQL Server 的技術支持策略。
我一直使用 Windows SQL Server。 是否有可幫助了解如何使用 Linux 上的 SQL Server 的相關資源?
快速入門中提供了有關如何在 Linux 上安裝 SQL Server 和運行 Transact-SQL 查詢的分步說明。 其他教程提供了有關在 Linux 上使用 SQL Server 的其他說明。 要獲取第三方提示列表,請參閱 Linux 上的 SQL Server 的 MSSQLTIPS 列表提示。
許可
如何在 Linux 上授予許可?
在 Windows 和 Linux 上為 SQL Server 授予許可的方法是相同的。 事實上,為 SQL Server 授予許可后,即可在所選的平臺上使用該許可。 有關詳細信息,請參閱如何為 SQL Server 授與許可。
在已購買 SQL Server 時應選擇哪個版本?
運行 mssql-conf 安裝程序時,會顯示以下選項:
復制
Choose an edition of SQL Server: 1. Evaluation (free, no production use rights, 180-day limit) 2. Developer (free, no production use rights) 3. Express (free) 4. Web (PAID) 5. Standard (PAID) 6. Enterprise (PAID) 7. Enterprise Core (PAID) 8. I bought a license through a retail sales channel and have a product key to enter.
如果已通過批量許可(在企業協議中)或通過 MSDN 訂閱獲得許可證,則需要選擇選項 4 到 7。 此步驟不會要求輸入許可證,但必須先為配置購買相應的許可證。 如果已通過零售渠道購買了標準版,請選擇選項 8。 此選項會提示輸入密鑰。
如何驗證已安裝的版本和 Linux 上的 SQL Server 的版本?
使用 sqlcmd、mssql-cli 或 Visual Studio Code 等客戶端工具連接到 SQL Server 實例 。 然后,運行以下 Transact-SQL 查詢以驗證版本和正在運行的 SQL Server 的版本:
SQL復制
SELECT @@VERSION SELECT SERVERPROPERTY('Edition')
安裝
如何在我的 Linux 服務器上安裝 SQL Server?
Microsoft 維護用于安裝 SQL Server 的包存儲庫,并支持通過本機包管理器(如 yum、zypper 和 apt)進行安裝。 若要快速安裝,請參閱其中一篇快速入門文章。
能否在 Windows 10 或 Windows 11 的 Linux 子系統上安裝 SQL Server?
不是。 在 Windows 10 或 Windows 11 上運行的 Linux 目前不是 SQL Server 及其相關工具的受支持平臺。
SQL Server 可以將哪些 Linux 文件系統用于數據文件?
Linux 上的 SQL Server 目前支持 ext4 和 XFS。 將來會按需添加對其他文件系統的支持。
是否可以下載安裝包以脫機安裝 SQL Server?
是的。 有關詳細信息,請參閱發行說明中的包下載鏈接。 另請參閱脫機安裝說明。
是否可以在 Linux 上執行無人參與安裝 SQL Server?
是的。 有關無人參與安裝的介紹,請參閱 Linux 上的 SQL Server 的安裝指南。 請參閱 Red Hat、SUSE Linux Enterprise Server 和 Ubuntu 的示例腳本。 還可以查看 SQL Server 客戶顧問團隊創建的此示例腳本。
工具
是否可以使用 Windows 上的 SQL Server Management Studio 客戶端訪問 Linux 上的 SQL Server?
可以。可以使用在 Windows 上運行的所有現有工具來訪問 Linux 上的 SQL Server。 其中包括 Microsoft 提供的工具(如 SQL Server Management Studio (SSMS)、SQL Server Data Tools (SSDT) 和 OSS)以及第三方工具。
是否有可在 Linux 上運行的類似 SSMS 的工具?
新 Azure Data Studio 是一款用于管理 SQL Server 的跨平臺工具。 有關詳細信息,請參閱什么是 Azure Data Studio。
Linux 上是否提供 sqlcmd 和 bcp 等命令?
提供。Linux、macOS 和 Windows 上本機提供 sqlcmd 和 bcp。 此外,可使用 Linux、macOS 或 Windows 上的新 mssql-scripter 命令行工具為在任何位置運行的 SQL 數據庫生成 T-SQL 腳本。 另請參閱 mssql-cli 的預覽版本。
通過 Windows 上的 SSMS 進行連接時,是否可以針對 Linux 上運行的實例查看 Activity Monitor?
可以。可以使用 Windows 上的 SSMS 進行遠程連接,并對 Linux 實例使用 Activity Monitor 命令之類的工具/功能。
有哪些工具可用于監視 Linux 上的 SQL Server 性能?
可使用系統動態管理視圖 (DMV) 收集有關 SQL Server 的各種類型的信息,包括 Linux 進程信息。 可使用查詢存儲提高查詢性能。 其他工具(例如,內置性能儀表板)可在 Windows 的 SQL Server Management Studio (SSMS) 中遠程工作。
提示
正確配置 Linux 操作系統和 SQL Server 實例是提高性能的一種方法。 有關詳細信息,請參閱 Linux 上的 SQL Server 的性能最佳做法和配置指南。
管理
Microsoft 是否在 Linux 上創建了類似 SQL Server 配置管理器的應用?
是的,存在適用于 Linux 上的 SQL Server 的配置工具:mssql-conf。
Linux 上的 SQL Server 是否支持同一主機上的多個實例?
我們建議在主機上運行多個容器以獲得多個不同的實例。 使用 docker 很容易實現這一點,但每個容器都需要偵聽不同的端口。 有關詳細信息,請參閱運行多個 SQL Server 容器。
Linux 上是否支持 Active Directory 身份驗證?
是的。 有關詳細信息,請參閱對 Linux 上的 SQL Server 使用 Active Directory 身份驗證。
Linux 是否支持 Always On 和群集?
Linux 上使用 Pacemaker 實現故障轉移群集和高可用性。 有關詳細信息,請參閱 業務連續性和數據庫恢復 - Linux 上的 SQL Server。
是否可以配置 Linux 與 Windows 之間的相互復制?
可以在 Windows 和 Linux 之間使用讀取規模副本進行單向數據復制。
是否可以將舊版 SQL Server 中的現有數據庫從 Windows 遷移到 Linux?
可以。可以通過幾種方法實現此目的。
是否可以將 Oracle 和其他數據庫引擎中的數據遷移到 Linux 上的 SQL Server?
是的。 SSMA 支持從幾種類型的數據庫引擎進行遷移:Microsoft Access、DB2、MySQL、Oracle 和 SAP ASE(以前稱為 SAP Sybase ASE)。 有關如何使用 SSMA 的示例,請參閱使用 SQL Server 遷移助手將 Oracle 架構遷移到 Linux 上的 SQL Server。
SQL Server 文件需要哪些權限?
文件文件夾中的 /var/opt/mssql 所有文件都應由 /var/opt/mssql 用戶擁有,并且屬于 mssql 組。 mssql 用戶和組都應具有所有文件和目錄的讀寫權限。 請注意以下涉及文件和目錄權限的特殊情況:
用于存儲 SQL Server 文件的已裝載網絡共享必須擁有 mssql 所有者和組的權限。
如果在非默認目錄中找到數據庫文件或備份,則也必須為該目錄設置權限。
如果更改 0022 中的默認根 umask,則安裝后 SQL Server 配置將失敗。 然后,必須手動將所需權限應用于 SQL Server 啟動帳戶。
是否可以更改已安裝的 mssql 帳戶和組中的 SQL Server 文件和目錄的所有權?
我們不支持更改默認安裝中的 SQL Server 目錄和文件的所有權。 mssql 帳戶和組專門用于 SQL Server 且不支持交互式登錄訪問。
SQL Server 數據和日志目錄是否支持符號鏈接?
否,SQL Server 數據和日志目錄不支持符號鏈接。 若要更改默認數據和日志目錄,請參閱更改默認數據或日志目錄位置。
是否可以從 Linux 上的 SQL Server 中和容器實例中刪除內置\管理員帳戶?
刪除用于 Linux 上的 SQL Server 的內置\管理員賬戶會中斷某些系統存儲過程的執行。 建議不要從 Linux 上的 SQL Server/容器中刪除內置\管理員帳戶。
? 部署在任何操作系統或環境中的 SQL Server 的 SQL Server 引擎是否相同?
**Amit:**SQL Server 引擎在部署在不同操作系統上的 SQL Server 之間是相同的,無論是 Linux 上的 SQL Server、Windows 上的 SQL Server、部署在獨立主機或 kubernetes 平臺上的容器。唯一的區別是目前在 Linux/容器上的 SQL Server 上目前不支持的功能很少。
SQL Server 不受支持的功能的當前列表,參考:
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-editions-and-components-2019?view=sql-server-ver15#Unsupported
?SQL Server 在基于 Windows 的容器上是否支持生產?
**Amit:**目前為止,生產環境工作負載不支持在 Windows 容器上運行的 SQL Server。它處于預覽模式有一段時間了,但由于當前生態系統的限制,現在它不受支持,并且也不在測試版中。
? 如何在 Linux 訪問 SQL Server 配置管理器,簡單地說,如何在 Linux 上配置 SQL Server?
**Amit:**你可以在 Linux 上使用 mssql-conf 工具配置 SQL Server 。更改 SQL Server 端口、啟用 AD 身份驗證、啟用/禁用跟蹤標志等,所有任務都可以通過 mssql-conf 工具完成。你可以運行命令“mssql-conf –help”以了解使用 mssql-conf 工具可用的各種設置。
? 部署 Linux 容器上的 SQL Server 是否支持生產工作負載?支持邊界是什么?
**Amit:**是的,生產工作負載支持 Linux 容器上的 SQL Server。你可以在任何受支持的 Linux 發行版的容器上部署 SQL Server 。你可以從 Microsoft 容器注冊表中獲取 SQL Server 鏡像,要發現基于 Ubuntu 的 SQL 容器鏡像,你可以參考 docker hub(https://hub.docker.com/_/microsoft-mssql-server),要發現基于 Redhat 的容器,你可以參考Redhat 容器目錄(https://catalog.redhat.com/software/containers/mssql/rhel/server/5ba50865f5a0de06555a2ee7)。也可以使用自定義 docker 文件創建 SQL Server 映像。
? 如何為基于 SUSE 的主機創建 SQL Server Linux 容器映像?是否有一個可以參考的dockerfile示例?
**Amit:**你可以通過dockerfile為基于SUSE的主機創建SQL Server Linux容器鏡像,類似的示例可以參考。(https://github.com/microsoft/mssql-docker/tree/master/linux/preview/SLES)
? 是否也可以使用 podman 部署 SQL Server Linux 容器?就像對 docker 那樣。
**Amit:**是的,Podman/docker 都受支持,可用于部署和運行 SQL Server 容器。
? 如果我是 Linux 生態系統的新手,精通 SQL Server,是否有任何教程了解 Linux 上的 SQL Server?
**Amit:**如果你計劃開始在 Linux 上使用 SQL Server,并且之前有在 Windows 上使用 SQL Server 的經驗,你會發現 Linux 上的 SQL Server 并沒有什么不同,只是設置體驗和生態系統體驗發生了變化。首先,你可以參考本教程來幫助你了解 Linux 的基礎知識,然后你可以根據自己的興趣進一步構建基礎知識。同樣,如果你精通 Linux,但不熟悉 SQL Server,則可以從本教程開始。
? 我可以跨運行在各種操作系統或容器上的 SQL Server 實例附加/移動/恢復數據庫嗎?
**Amit:**當然,SQL Server 引擎在 SQL Server 的所有部署中都是相同的。因此,你可以從基于 SQL Server Linux 的容器中備份數據庫,將其移動到 Windows 環境,然后在裸機/VM 上的 Windows 上的 SQL Server 上還原它。事實上,官方有關于將數據庫遷移到 Linux 上的 SQL 的可用文檔參考(https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-migrate-overview?view=sql-server-ver15)。
? 是否有關于如何在 Linux 上部署 SQL Server 以獲得最佳性能的指導性建議?
**Amit:**是的,官方提供了詳細的文檔(https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-performance-best-practices?view=sql-server-ver15),其中討論了可以在存儲、文件系統、內核、CPU 等方面的性能配置,以獲得最佳 SQL Server 性能實踐。本文中提到的大部分建議也可以應用于運行 SQL Server 容器的主機。例如如果持久存儲來自主機,則存儲設置可以應用于主機,調整配置文件設置可以應用于主機等等。
? 我可以繼續限制分配給 SQL Server 容器的資源嗎?
**Amit:**是的,在部署 SQL Server 容器時,你可以為每個部署 SQL Server 的容器設置 CPU 和內存等資源限制。諸如“-cpus”和“-memory”之類的 docker 標志可用于設置資源限制。讓我們舉一個例子來進一步理解這一點,假設你在主機上總共有 16 個邏輯處理器,當你部署容器時,你使用以下命令:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=strongpassword" -p 1433:1433 \ -name sql1 -hostname sql1 -cpus 8 \ -d mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-18.04
此命令可限制 SQL Server 容器僅使用 16 個邏輯處理器中的 8 個。在錯誤日志中,你可以看到 SQL Server 所有 16 個邏輯處理器,但它僅使用 16 個 CPU 中的 8 個來運行工作量。
? 我可以在 Kubernetes 集群上部署 SQL Server 嗎?這是否受支持?
**Amit:**是的,你可以將 SQL Server 部署在 Kubernetes 集群或像 openshift 這樣的 opinated Kubernetes 集群上,它支持生產工作負載。你可以將 SQL Server 部署為 statefulset 或部署類型。示例部署 yaml 文件可在此處獲取以供參考,可用于所有 kubernetes 集群進行部署。
? 如何在容器上配置 SQL Server,是否可以使用 mssql-conf 工具?
**Amit:**對于 SQL Server 容器,你可以在部署 SQL Server 容器時通過在容器內掛載 mssql-conf 文件來提供配置設置。其中一些配置設置也可用作部署 SQL Server 容器時的環境變量。
? 你是否有任何示例 Helm Charts 來部署 SQL Server 容器?
**Amit:**是的,你可以通過 helm charts 部署 SQL Server,這里有一些示例 helm charts 來幫助你入門,請參考 statefulset helm chart 進行statefulset部署(https://github.com/microsoft/mssql-docker/tree/master/linux/sample-helm-chart-statefulset-deployment)。
? 在Kubernetes 平臺上部署SQL Server 容器時,我們是否也可以設置資源限制?
**Amit:**當然,在部署 SQL Server 容器時,你可以使用 yaml 文件中的資源限制選項。事實上,您應該始終嘗試并確保 SQL Server 容器/pod的QoS(服務質量)設置為有保證的。這意味著 SQL Server 的資源請求和資源限制是相同的,以確保 SQL Server 容器在 kubernetes 集群計劃在工作節點上運行時獲得資源。
? 我可以為Linux/容器上的SQL Server 配置AD (Active Directory) 身份驗證嗎?
**Amit:**Linux 上的SQL Server和基于 SQL Server Linux 的容器都支持 Active Directory 身份驗證。實際上,你現在可以使用一個名為 adutil 的預覽工具來輕松地為 Linux 上的 SQL Server 和基于SQL Server Linux 的容器配置活動目錄身份驗證。此工具簡化了活動目錄身份驗證的配置,確保您可以從加入域的Linux機器上管理windows活動目錄。
在 Linux 容器上為 SQL Server 啟用 AD 身份驗證時,你可以擁有一個環境,其中運行 SQL Server 容器的主機未加入域,但容器內的 SQL Server 已加入域。但是,對于 Linux BareMetal/VM 上的 SQL Server,你需要確保主機和 SQL Server 服務是同一域的一部分。如果域具有雙向信任并且屬于同一林的一部分,則還支持跨域登錄。
? 我想在同一 kubernetes 集群上運行的多個 SQL Server 容器之間設置 Always on Availability 組,我該怎么做?
**Amit:**截至今天,容器上的 SQL Server 可用性組設置僅在Read Scale模式下受支持,在任何其他模式下均不受支持。因此,你有一個 DR 選項,為容器上的 SQL Server 使用AlwaysOn可用性組,但不使用 HA(高可用性)。你可以在 kubernetes 中運行的 SQL Server 容器上設置 Read scale always on availability group。
Linux SQL SQL Server
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。