編碼和譯碼 SQL Server 識別碼

SQL Server 分隔的標識碼有時包含 Windows PowerShell 路徑中不支援的字元。 這些字元可以藉由編碼其十六進位值來指定。

注意

有兩個 SQL Server PowerShell 模組; SqlServer 和 SQLPS。

SqlServer 模組是要使用的目前 PowerShell 模組。

SQLPS 模組隨附於 SQL Server 安裝中(為了回溯相容性),但不再更新。

SqlServer 模組包含 SQLPS 中更新的 Cmdlet 版本,並包含新的 Cmdlet 以支援最新的 SQL 功能。

從 PowerShell 資源庫安裝 SqlServer 模組。

如需詳細資訊,請流覽 SQL Server PowerShell。

Windows PowerShell 路徑名稱中不支援的字元可以表示或編碼為 “%” 字元,後面接著代表字元之位模式的十六進位值,如 “**%**xx”。 編碼一律可用來處理 Windows PowerShell 路徑中不支援的字元。

Cmdlet 會 Encode-Sqlname 採用 SQL Server 識別碼作為輸入,並輸出字串,其中包含以 %xx編碼之 Windows PowerShell 語言不支援的所有字元。 Cmdlet 會 Decode-SqlName 接受編碼的 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"