如何使用 PowerShell 檢查 SQL Server 版本
-
使用
sqlcmd
工具在 PowerShell 中檢查 SQL 伺服器版本 -
使用
sqlcmd
工具的優缺點 -
使用
Invoke-Sqlcmd
Cmdlet 使用 PowerShell 檢查 SQL 伺服器版本 -
使用
Invoke-Sqlcmd
Cmdlet 在 PowerShell 中檢查 SQL 伺服器版本的優缺點 -
sqlcmd
工具和Invoke-Sqlcmd
Cmdlet 之間的區別 - 結論

檢查程式版本是您可以在 PowerShell 中執行的常見操作之一。如果您正在使用 Microsoft SQL 伺服器來管理關聯數據庫,知道您計算機上安裝了哪個版本是很重要的。
本教程將介紹使用 PowerShell 檢查 SQL 伺服器版本的兩種方法。
使用 sqlcmd
工具在 PowerShell 中檢查 SQL 伺服器版本
sqlcmd
是一種命令行工具,允許您執行互動式 Transact-SQL 語句和腳本。它有助於自動化 Transact-SQL 腳本任務。
語法:
sqlcmd -S ServerName\InstanceName -Q "SQL Query"
在上述語法中,我們將 ServerName
替換為您的 SQL 伺服器名稱,將 InstanceName
替換為您的 SQL 伺服器實例名稱,並將 "SQL Query"
替換為您想要執行的特定 SQL 查詢。
以下命令在 PowerShell 中打印 SQL 伺服器版本。DelftStack
是伺服器名稱,而 SQLEXPRESS
是我們的 SQL 伺服器實例名稱。
sqlcmd -S DelftStack\SQLEXPRESS -Q "SELECT @@VERSION"
我們使用 sqlcmd
工具,這是一種用於執行 Transact-SQL 命令和腳本的命令行工具。這是一種從命令行與 SQL 伺服器進行交互的方法。
使用 -S DelftStack\SQLEXPRESS
,我們指定要連接的伺服器和實例。DelftStack
是伺服器名稱,而 SQLEXPRESS
是實例名稱,這個組合標識了我們想要查詢的特定 SQL 伺服器。
命令中的 -Q "SELECT @@VERSION"
部分指示 SQL 伺服器執行一個 SQL 查詢。在這種情況下,我們要求 SQL 伺服器檢索其版本信息。
SELECT @@VERSION
查詢是一個內置的 SQL 伺服器命令,返回詳細的版本信息。
輸出:
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)
Sep 24 2019 13:48:23
Copyright (C) 2019 Microsoft Corporation
Express Edition (64-bit) on Windows 10 Home Single Language 10.0 <X64> (Build 22000: )
(1 rows affected)
輸出顯示有關 SQL 伺服器版本的詳細信息,包括發佈和編譯信息。它顯示已安裝的 SQL 伺服器版本是 15.0.2000.5
。
重要的是要注意,sqlcmd
工具必須已經安裝並且可以在系統的 PATH 中訪問。如果未安裝或無法訪問,則命令將失敗。
要在 PowerShell 中安裝 sqlcmd
,您需要安裝 SQL 伺服器命令行工具,它們包括 sqlcmd
。
以下是安裝 sqlcmd
的步驟:
-
下載 SQL 伺服器命令行工具
訪問 Microsoft SQL 伺服器下載頁面。向下滾動到
"Install the SQL Server command-line tools"
部分,然後單擊"Microsoft Command Line Utilities 15 for SQL Server"
(或根據您的需要選擇的適用版本)的下載鏈接。 -
運行安裝程式
運行下載的安裝程式(通常是
.msi
文件)。按照安裝向導的指示操作。 -
選擇組件
在安裝過程中,系統會提示您選擇組件。確保特別選擇
"Command Line Utilities"
或"sqlcmd"
。 -
完成安裝
繼續完成安裝過程,完成後,您將在系統上安裝
sqlcmd
。 -
驗證安裝
打開命令提示符窗口並輸入
sqlcmd
。如果安裝正確,您應該會看到sqlcmd
提示符。
請記住,根據 SQL 伺服器的版本,特定的步驟和安裝程式的名稱可能會有所不同,您選擇的安裝包也會有所不同。在安裝過程中,請務必選擇合適的組件以確保包含 sqlcmd
。
此外,命令中提供的伺服器名稱和實例名稱應該是有效且可訪問的。如果它們不正確或無法訪問,命令將失敗。
使用 sqlcmd
工具的優缺點
優點:
- 用於腳本和自動化的命令行控制。
- 無需安裝其他模塊。
- 廣泛支持 SQL 伺服器版本。
缺點:
- 輸出可能不太符合用戶友好,需要額外解析。
- 與
Invoke-Sqlcmd
相比功能有限。
使用 Invoke-Sqlcmd
Cmdlet 使用 PowerShell 檢查 SQL 伺服器版本
Invoke-Sqlcmd
cmdlet 執行 SQL 伺服器 SQLCMD 工具支持的腳本和命令。它接受 Transact-SQL 語句和命令,例如 GO
和 QUIT
。
語法:
Invoke-Sqlcmd -query "SQL Query" -ServerInstance "ServerName\InstanceName"
在上述語法中,我們將 "SQL Query"
替換為您想要執行的特定 SQL 查詢,將 "ServerName\InstanceName"
替換為您想要連接的 SQL 伺服器的伺服器和實例名稱。此命令用於從 PowerShell 內部運行 SQL 查詢,特別適合將 SQL 伺服器任務整合到 PowerShell 腳本中。
以下命令在 PowerShell 中獲取 SQL 伺服器版本。
Invoke-Sqlcmd -query "SELECT @@VERSION" -ServerInstance "DELFT-PC\SQLEXPRESS"
我們使用 Invoke-Sqlcmd
cmdlet,這是 PowerShell 的一部分,專門用於與 SQL 伺服器進行交互。它允許我們直接從 PowerShell 腳本或會話中執行 SQL 命令和查詢。
命令中的 -query "SELECT @@VERSION"
部分指定我們要運行的 SQL 查詢。在這種情況下,我們執行 SQL 查詢 SELECT @@VERSION
,這是一個內置的 SQL 伺服器命令,檢索有關其所連接的 SQL 伺服器的詳細版本信息。
使用 -ServerInstance "DELFT-PC\SQLEXPRESS"
,我們定義要連接的伺服器和實例:
-
-ServerInstance
是一個選項,表示我們要連接的伺服器和實例。 -
"DELFT-PC\SQLEXPRESS"
是伺服器名稱和實例名稱的組合。"DELFT-PC"
表示 SQL 伺服器的名稱,而"SQLEXPRESS"
表示安裝在該計算機上的特定 SQL 伺服器實例,這個組合指定了我們想要查詢的確切 SQL 伺服器。
輸出:
Column1
-------
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) ...
上面的輸出提供了有關 SQL 伺服器版本的詳細信息,包括發佈和編譯詳細信息。
如果無法識別 Invoke-Sqlcmd
cmdlet,您必須使用以下命令安裝它:
Install-Module SqlServer
然後,運行此命令以導入該模塊。
Import-Module SqlServer
這種方法方便將 SQL 伺服器任務整合到 PowerShell 腳本中,並利用 PowerShell 的數據操作和自動化能力。
重要的是要注意,Invoke-Sqlcmd
cmdlet 在當前 PowerShell 會話中已經可用。如果所需的模塊未導入,代碼將因錯誤而失敗。
此外,如果指定的 SQL 伺服器實例("DELFT-PC\SQLEXPRESS"
)不正確或無法訪問,代碼將無法連接並執行查詢。
使用 Invoke-Sqlcmd
Cmdlet 在 PowerShell 中檢查 SQL 伺服器版本的優缺點
優點:
- 與 PowerShell 的無縫整合以實現高級腳本。
- 更結構化和用戶友好的輸出。
- 豐富的功能集以便於處理複雜的數據庫任務。
缺點:
- 需要安裝
SqlServer
模塊。 - 與 SQL 伺服器版本的兼容性可能有所不同。
sqlcmd
工具和 Invoke-Sqlcmd
Cmdlet 之間的區別
使用 sqlcmd
工具與 Invoke-Sqlcmd
cmdlet 檢查 SQL 伺服器版本的兩種方法之間的主要區別可以總結為它們的方法、整合和可用性。
關鍵區別在於 sqlcmd
是一個外部工具,與 PowerShell 的整合有限。它作為一個獨立的命令行工具運行,雖然可以在 PowerShell 腳本中使用,但它提供的整合和靈活性水平與 Invoke-Sqlcmd
不同。
另一方面,Invoke-Sqlcmd
是一個 PowerShell 原生的 cmdlet,專門用於與 SQL 伺服器進行交互。它為在 PowerShell 腳本中管理 SQL 伺服器數據提供了更強大和集成的方法,這個 cmdlet 允許與 PowerShell 無縫整合、結構化的輸出和高級數據操作能力。
結論
本教程探討了在 PowerShell 中檢查 SQL 伺服器版本的兩種方法:使用 sqlcmd
工具和 Invoke-Sqlcmd
cmdlet。
sqlcmd
工具是一種命令行工具,提供命令行控制,無需額外的模塊安裝。然而,其輸出可能需要額外解析,並且與 Invoke-Sqlcmd
相比功能有限。
Invoke-Sqlcmd
cmdlet 是一個原生的 PowerShell 工具,與 PowerShell 無縫整合,提供結構化且用戶友好的輸出,以及廣泛的 SQL 伺服器功能。它確實需要安裝 SqlServer
模塊。
作為最佳實踐,我們應該意識到軟體和模塊名稱可能會隨著時間而改變,確認模塊名稱和版本根據其當前環境是至關重要的。這確保了提供的代碼和方法保持相關和功能正常。