SQL Server 分隔的标识符有时包含 Windows PowerShell 路径中不支持的字符。 可以通过对其十六进制值进行编码来指定这些字符。
注释
SQL Server PowerShell 模块有两种;SqlServer 和 SQLPS 。
SqlServer 模块是当前要使用的 PowerShell 模块。
虽然 SQL Server 安装附带了 SQLPS 模块(用于实现后向兼容性),但该模块不再更新。
SqlServer 模块不仅包含 SQLPS 更新版本的 cmdlet,还包含新的 cmdlet 以支持最新的 SQL 功能 。
从 PowerShell 库安装 SqlServer 模块。
有关详细信息,请访问 SQL Server PowerShell。
Windows PowerShell 路径名称中不支持的字符可以表示或编码为“%”字符,后跟表示字符的位模式的十六进制值,如“**%**xx”。 对于 Windows PowerShell 路径中不支持的字符,始终可以使用编码来处理字符。
该 Encode-Sqlname
cmdlet 采用 SQL Server 标识符作为输入,并输出一个字符串,其中包含使用 Windows PowerShell 语言编码 %xx
的所有字符。 该 Decode-SqlName
cmdlet 采用编码的 SQL Server 标识符作为输入并返回原始标识符。
局限和限制
Encode-Sqlname
和 Decode-Sqlname
cmdlet 仅对 SQL Server 分隔标识符中允许的字符进行编码或解码,但在 PowerShell 路径中不受支持。 以下是由 Encode-SqlName
以下字符编码和解码的 Decode-SqlName
字符:
字符 | \ | / | : | % | < | > | * | ? | [ | ] | | |
---|---|---|---|---|---|---|---|---|---|---|---|
十六进制编码 | %5C | %2F | %3A | %25 | %3C | %3E | %2A | %3F | %5B | %5D | %7C |
对标识符进行编码
对 PowerShell 路径中的 SQL Server 标识符进行编码
- 使用以下两种方法之一对 SQL Server 标识符进行编码:
- 使用语法 %XX(其中,XX 是十六进制代码)为不支持的字符指定十六进制代码。
- 将标识符以带引号的字符串的形式传递到
Encode-Sqlname
cmdlet
示例(编码)
此示例指定字符的 :
编码版本(%3A):
Set-Location Table%3ATest
或者,可用于 Encode-Sqlname
生成 Windows PowerShell 支持的名称:
Set-Location (Encode-SqlName "Table:Test")
解码标识符
若要从 PowerShell 路径解码 SQL Server 标识符,请使用 Decode-Sqlname
cmdlet 将十六进制编码替换为编码表示的字符。
示例(解码)
下面的示例返回“Table:Test”:
Decode-SqlName "Table%3ATest"