如何使用 PowerShell 检查 SQL Server 版本

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

检查程序版本是您在 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 语句和命令,如 GOQUIT

语法:

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",我们定义要连接的服务器和实例,包括以下组件:

  1. -ServerInstance 是一个选项,指示我们要连接的服务器和实例。

  2. "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 模块。

作为最佳实践,我们应意识到软件和模块名称可能随时间而变化,并且根据当前环境验证模块名称和版本至关重要。这确保提供的代码和方法保持相关和功能性。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相关文章 - PowerShell SQL