分享方式:


編碼和譯碼 SQL Server 識別碼

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

注意

有兩個 SQL Server PowerShell 模組;SqlServerSQLPS

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

SQLPS 模組 隨附於 SQL Server 安裝中,但不再更新。

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

PowerShell 資源庫安裝 SqlServer 模組。

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

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

Encode-Sqlname Cmdlet 接受 SQL Server 識別碼作為輸入,並輸出字串,其中包含以 %xx編碼之 Windows PowerShell 語言不支援的所有字元。 Decode-SqlName Cmdlet 會接受編碼的 SQL Server 識別碼作為輸入,並傳回原始標識符。

限制

Encode-SqlnameDecode-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"