Шифрование и расшифровка идентификаторов SQL Server

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

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

Примечание.

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

Самым актуальным модулем PowerShell является модуль SqlServer.

Модуль 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-Sqlname и Decode-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"

См. также