如何使用 PowerShell 检查 SQL Server 版本
-
使用
sqlcmd
工具在 PowerShell 中检查 SQL Server 版本 -
使用
sqlcmd
工具的优缺点 -
使用
Invoke-Sqlcmd
Cmdlet 在 PowerShell 中检查 SQL Server 版本 -
使用
Invoke-Sqlcmd
Cmdlet 在 PowerShell 中检查 SQL Server 版本的优缺点 -
sqlcmd
工具和Invoke-Sqlcmd
Cmdlet 的区别 - 结论

检查程序版本是您在 PowerShell 中可以执行的常见操作之一。如果您使用 Microsoft SQL Server 来管理关系数据库,了解计算机上安装的版本非常重要。
本教程将介绍两种使用 PowerShell 检查 SQL Server 版本的方法。
使用 sqlcmd
工具在 PowerShell 中检查 SQL Server 版本
sqlcmd
是一个命令行工具,它允许您运行交互式的 Transact-SQL 语句和脚本。它有助于自动化 Transact-SQL 脚本任务。
语法:
sqlcmd -S ServerName\InstanceName -Q "SQL Query"
在上面的语法中,我们用您的 SQL Server 名称替换 ServerName
,用您的 SQL Server 实例名称替换 InstanceName
,并用您要执行的特定 SQL 查询替换 "SQL Query"
。
以下命令在 PowerShell 中打印 SQL Server 版本。DelftStack
是服务器名称,SQLEXPRESS
是我们的 SQL Server 实例名称。
sqlcmd -S DelftStack\SQLEXPRESS -Q "SELECT @@VERSION"
我们使用 sqlcmd
工具,它是一个用于执行 Transact-SQL 命令和脚本的命令行工具。这是从命令行与 SQL Server 交互的一种方式。
使用 -S DelftStack\SQLEXPRESS
,我们指定要连接的服务器和实例。DelftStack
是服务器名称,SQLEXPRESS
是实例名称,这个组合标识我们要查询的特定 SQL Server。
命令中的 -Q "SELECT @@VERSION"
部分指示 SQL Server 执行 SQL 查询。在这种情况下,我们请求 SQL Server 检索其版本信息。
SELECT @@VERSION
查询是一个内置的 SQL Server 命令,返回详细的版本信息。
输出:
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 Server 版本的详细信息,包括发行和构建信息。它显示安装的 SQL Server 版本为 15.0.2000.5
。
重要的是要注意,sqlcmd
工具必须已经安装并可在系统的 PATH 中访问。如果未安装或无法访问,命令将失败。
要在 PowerShell 中安装 sqlcmd
,您需要安装 SQL Server 命令行工具,其中包括 sqlcmd
。
以下是安装 sqlcmd
的步骤:
-
下载 SQL Server 命令行工具
访问 Microsoft SQL Server 下载页面。向下滚动到“安装 SQL Server 命令行工具”部分,并单击“Microsoft SQL Server 的命令行工具 15”或适合您需求的版本的下载链接。
-
运行安装程序
运行下载的安装程序(通常是
.msi
文件)。遵循安装向导的说明。 -
选择组件
在安装过程中,系统会提示您选择组件。确保选择“命令行工具”或特别选择
sqlcmd
。 -
完成安装
继续安装过程,完成后,您将在系统上安装
sqlcmd
。 -
验证安装
打开命令提示符窗口,输入
sqlcmd
。如果安装正确,您应该会看到sqlcmd
提示符。
请记住,根据 SQL Server 的版本,特定步骤和安装程序的名称可能会有所不同,以及您选择的安装包。请确保在安装过程中选择适当的组件,以确保包含 sqlcmd
。
此外,命令中提供的服务器名称和实例名称应有效且可访问。如果它们不正确或无法访问,命令将失败。
使用 sqlcmd
工具的优缺点
优点:
- 用于脚本和自动化的命令行控制。
- 无需安装额外的模块。
- 在 SQL Server 版本之间广泛支持。
缺点:
- 输出可能不太友好,需要额外解析。
- 与
Invoke-Sqlcmd
相比,功能有限。
使用 Invoke-Sqlcmd
Cmdlet 在 PowerShell 中检查 SQL Server 版本
Invoke-Sqlcmd
cmdlet 执行 SQL Server SQLCMD 工具支持的脚本和命令。它接受 Transact-SQL 语句和命令,如 GO
和 QUIT
。
语法:
Invoke-Sqlcmd -query "SQL Query" -ServerInstance "ServerName\InstanceName"
在上面的语法中,我们用您要执行的特定 SQL 查询替换 "SQL Query"
,用您想要连接的 SQL Server 的服务器和实例名称替换 "ServerName\InstanceName"
。此命令用于从 PowerShell 内部运行 SQL 查询,特别适用于将 SQL Server 任务集成到 PowerShell 脚本中。
以下命令在 PowerShell 中获取 SQL Server 版本。
Invoke-Sqlcmd -query "SELECT @@VERSION" -ServerInstance "DELFT-PC\SQLEXPRESS"
我们正在使用 Invoke-Sqlcmd
cmdlet,它是 PowerShell 的一部分,并专门设计用于与 SQL Server 交互。它允许我们直接从 PowerShell 脚本或会话中执行 SQL 命令和查询。
命令中的 -query "SELECT @@VERSION"
部分指定我们要运行的 SQL 查询。在这种情况下,我们正在执行 SQL 查询 SELECT @@VERSION
,该查询是一个内置的 SQL Server 命令,用于检索有关与之连接的 SQL Server 的详细版本信息。
使用 -ServerInstance "DELFT-PC\SQLEXPRESS"
,我们定义要连接的服务器和实例,包括以下组件:
-
-ServerInstance
是一个选项,指示我们要连接的服务器和实例。 -
"DELFT-PC\SQLEXPRESS"
是服务器名称和实例名称的组合。"DELFT-PC"
代表 SQL Server 的名称,"SQLEXPRESS"
代表安装在该机器上的特定 SQL Server 实例,这个组合指定了我们要查询的确切 SQL Server。
输出:
Column1
-------
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) ...
上面的输出为我们提供了有关 SQL Server 版本的详细信息,包括发行和构建详细信息。
如果不识别 Invoke-Sqlcmd
cmdlet,您必须使用以下命令安装它:
Install-Module SqlServer
然后,运行此命令以导入模块。
Import-Module SqlServer
这种方法非常方便,可以将 SQL Server 任务集成到 PowerShell 脚本中,并利用 PowerShell 进行数据操作和自动化。
重要的是要注意,Invoke-Sqlcmd
cmdlet 在当前 PowerShell 会话中已可用。如果所需的模块未导入,代码将因错误而失败。
此外,如果指定的 SQL Server 实例("DELFT-PC\SQLEXPRESS"
)不正确或无法访问,代码将无法连接并执行查询。
使用 Invoke-Sqlcmd
Cmdlet 在 PowerShell 中检查 SQL Server 版本的优缺点
优点:
- 与 PowerShell 的无缝集成,适用于高级脚本。
- 更结构化和用户友好的输出。
- 适用于复杂数据库任务的丰富功能集。
缺点:
- 需要安装
SqlServer
模块。 - 与 SQL Server 版本的兼容性可能会有所不同。
sqlcmd
工具和 Invoke-Sqlcmd
Cmdlet 的区别
使用 sqlcmd
工具和 Invoke-Sqlcmd
cmdlet 检查 SQL Server 版本的主要区别可以从其方法、集成和可用性方面进行总结。
关键区别在于 sqlcmd
是一个外部工具,集成到 PowerShell 的程度有限。它作为独立的命令行工具操作,虽然可以在 PowerShell 脚本中使用,但没有提供与 Invoke-Sqlcmd
相同的集成和灵活性。
另一方面,Invoke-Sqlcmd
是一个专门用于与 SQL Server 交互的 PowerShell 原生 cmdlet。它为在 PowerShell 脚本中管理 SQL Server 数据提供了一种更强大和集成的方法,这个 cmdlet 允许与 PowerShell 无缝集成、结构化输出和高级数据操作能力。
结论
本教程探讨了在 PowerShell 中检查 SQL Server 版本的两种方法:使用 sqlcmd
工具和 Invoke-Sqlcmd
cmdlet。
sqlcmd
工具是一个命令行工具,提供命令行控制,并且不需要额外的模块安装。然而,它的输出可能需要额外解析,并且与 Invoke-Sqlcmd
相比功能有限。
Invoke-Sqlcmd
cmdlet 是一个本地 PowerShell 工具,与 PowerShell 无缝集成,提供结构化和用户友好的输出,以及广泛的 SQL Server 特性。它需要安装 SqlServer
模块。
作为最佳实践,我们应意识到软件和模块名称可能随时间而变化,并且根据当前环境验证模块名称和版本至关重要。这确保提供的代码和方法保持相关和功能性。