使用 SQL Server cmdlet

Windows PowerShell cmdlet 是单函数命令,通常具有“动词-名词”形式的命名约定,如 Get-HelpSet-MachineName。用于 Windows PowerShell 的 SQL Server 提供程序提供特定于 SQL Server 的 cmdlet。

SQL Server cmdlet

SQL Server 2008 实现了一小部分 Windows PowerShell cmdlet。

Get-Help cmdlet 为 Windows PowerShell 环境中的每个 cmdlet 都提供了帮助信息。Get-Help 返回各种信息,如语法、参数定义、输入和输出类型以及 cmdlet 所执行操作的说明。

下面的几个示例分别返回 SQL ServerEncode-SqlName cmdlet 的基本帮助、完整帮助、语法关系图、参数和示例:

get-help "Encode-SqlName"
get-help "Encode-SqlName" -Full
get-help "Encode-SqlName" -Syntax
get-help "Encode-SqlName" -Parameter *
get-help "Encode-SqlName" -Examples

Invoke-Sqlcmd

Invoke-Sqlcmd 支持运行含有 Transact-SQL 或 XQuery 语句的 sqlcmd 脚本或命令。它可以接受 sqlcmd 输入作为字符串输入参数或者作为要打开的脚本文件的名称。有关详细信息,请参阅使用 Invoke-Sqlcmd cmdlet

Invoke-PolicyEvaluation

Invoke-PolicyEvaluation 报告 SQL Server 对象的目标集是否符合基于策略的管理策略中定义的条件。可以选择使用 cmdlet 对不符合策略条件的目标对象中的任何可设置选项进行重新配置。有关详细信息,请参阅使用 Invoke-PolicyEvaluation cmdlet

对 SQL Server 标识符进行编码和解码

标识符是 SQL Server 对象的名称。SQL Server 标识符比 Windows PowerShell 语言支持的字符范围广。对于带中括号或引号的数据库引擎标识符,名称中所用字符的限制很少。某些用在带中括号或引号的标识符中的字符不能通过使用 Windows PowerShell ` 转义符来转义,而且会在使用 SQL Server 提供程序时产生问题。

Encode-SqlName cmdlet 将 SQL Server 标识符作为输入,并使用可用在 Windows PowerShell 中的表示形式,对所有不受 Windows PowerShell 语言支持的字符的格式重新进行设置。Decode-SqlName cmdlet 将经过编码的 SQL Server 标识符作为输入并返回初始标识符。例如:

  • Encode-SqlName "Table:Test" 返回字符串“Table%3ATest”。

  • Decode-SqlName "Table%3ATest" 返回“Table:Test”。

有关详细信息,请参阅在 PowerShell 中使用 SQL Server 标识符

将 URN 转换为路径

SQL Server 管理对象模型 (SMO) 为其对象生成统一资源名称 (URN)。每个对象的 URN 都有与其路径相同的信息,但是它们的格式有所不同。例如,下面是一个表的路径:

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks\Tables\Person.Address

下面是同一个对象的 URN:

Server[@Name='MyComputer']\Database[@Name='AdventureWorks']\Table[@Name='Address' and @Schema='Person']

Convert-UrnToPath cmdlet 将 SMO URN 字符串转换为 Windows PowerShell 路径。如果节点名称中包含 Windows PowerShell 路径名称中不支持的扩展字符,Convert-UrnToPath 会用这些字符的十六进制表示形式来对它们进行编码。例如,“My:Table”以“My%3ATable”形式返回。

在 Windows PowerShell 中,运行 Get-Help Convert-UrnToPath -Examples 可获得 cmdlet 的用法示例。

部分参数名称

不需要指定 cmdlet 参数的完整名称。您只需指定该名称的一部分,以便能够将其与 cmdlet 支持的其他参数区分开。例如,这些示例说明指定 Invoke-Sqlcmd -QueryTimeout 参数的三种方式:

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3