Поделиться через


Кодирование и декодирование идентификаторов SQL Server

Идентификаторы с разделителями SQL Server иногда содержат символы, которые не поддерживаются в путях Windows PowerShell. Эти символы можно задавать путем кодирования их шестнадцатеричных значений.

Замечание

Существует два модуля SQL Server PowerShell; SqlServer и SQLPS.

Модуль SqlServer — это текущий модуль PowerShell для использования.

Модуль SQLPS включен в установку SQL Server (для обратной совместимости), но больше не обновляется.

Модуль SqlServer содержит обновленные версии командлетов в SQLPS и включает новые командлеты для поддержки последних функций SQL.

Установите модуль SqlServer из коллекции PowerShell.

Дополнительные сведения см. в SQL Server PowerShell.

Символы, не поддерживаемые в именах путей Windows PowerShell, могут представляться или кодироваться как символ "%", за которым следует шестнадцатеричное значение битового шаблона, представляющего символ, как в символе "**%**xx". Для обработки символов, неподдерживаемых в обозначениях путей Windows PowerShell, всегда можно использовать кодировку.

Командлет Encode-Sqlname принимает идентификатор SQL Server в качестве входных данных и выводит строку со всеми символами, не поддерживаемыми языком Windows PowerShell.%xx Командлет Decode-SqlName принимает кодированный идентификатор SQL Server в качестве входных данных и возвращает исходный идентификатор.

Ограничения и запреты

Командлеты Encode-SqlnameDecode-Sqlname кодируют или декодируют символы, разрешенные в идентификаторах с разделителями SQL Server, но не поддерживаются в путях PowerShell. Ниже приведены символы, закодированные Encode-SqlName и декодированные по Decode-SqlName:

Символ \ / : % < > * ? [ ] |
Шестнадцатеричная кодировка %5C %2F %3A 25% %3C %3E %2A %3F %5B %5D %7C

Кодирование идентификатора

Кодирование идентификатора SQL Server в пути PowerShell

  • Используйте один из двух методов для кодирования идентификатора SQL Server:
    • Укажите шестнадцатеричный код для неподдерживаемого символа, используя синтаксис %XX, где XX — шестнадцатеричный код.
    • Передайте идентификатор в виде строки, заключенной в кавычки, в командлет Encode-Sqlname

Пример (кодировка)

В этом примере указывается кодированная версия символа : (%3A):

Set-Location Table%3ATest

Кроме того, можно использовать Encode-Sqlname для создания имени, поддерживаемого Windows PowerShell:

Set-Location (Encode-SqlName "Table:Test")

Декодирование идентификатора

Чтобы декодировать идентификатор SQL Server из пути PowerShell, используйте Decode-Sqlname командлет, чтобы заменить шестнадцатеричные кодировки символами, представленными кодировкой.

Пример (декодирование)

В этом примере происходит возврат строки Table:Test:

Decode-SqlName "Table%3ATest"