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


Параметры проекта (преобразование) (SybaseToSQL)

Страница "Преобразования" диалогового окна "Параметры проекта" содержит параметры, которые настраивают способ преобразования синтаксиса SAP Adaptive Server Enterprise (ASE) в синтаксис SQL Server или Azure SQL Database.

Область преобразования доступна в диалоговом окне "Параметры проекта " и " Параметры проекта по умолчанию ":

  • Если вы хотите указать параметры для всех проектов SSMA, в меню "Сервис " выберите "Параметры проекта по умолчанию", щелкните "Общие " в нижней части левой области и нажмите кнопку "Преобразование".

  • Чтобы указать параметры для текущего проекта, в меню "Сервис " выберите пункт "Параметры проекта", щелкните "Общие " в нижней части левой области и нажмите кнопку "Преобразовать".

Другие разделы

Ошибка

SQL Server/Azure SQL и ASE используют разные коды ошибок.

Используйте этот параметр, чтобы указать тип сообщения (предупреждение или ошибка), которое SSMA показывается в области вывода или списка ошибок при обнаружении ссылки на @@ERROR в коде ASE.

  • Если выбрать "Преобразовать и пометить с предупреждающим комментарием", SSMA преобразует операторы, пометив их предупреждающими комментариями.
  • Если выбрать Mark с ошибкой, SSMA пропустит преобразование и помечает инструкции с комментариями об ошибках.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Преобразование и пометка с предупреждением
Оптимистичный Преобразование и пометка с предупреждением
Полный Отметьте ошибку

Преобразование оператора LIKE

Указывает, следует ли преобразовывать LIKE операнды, чтобы они соответствовали поведению SAP ASE. Суть в том, что ASE аналогичным образом обрезает конечные пробелы. Решение заключается в том, чтобы сделать приведение правильного выражения к типу данных фиксированной длины с максимальной точностью.

  • Выберите простое преобразование , чтобы преобразовать выражения без каких-либо исправлений.
  • Чтобы использовать поведение ASE, выберите «Приведение к фиксированной длине».

При выборе режима преобразования в поле "Режим" SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Простое преобразование
Оптимистичный Простое преобразование
Полный Приведение к фиксированной длине

Преобразовать или привести пустые строки к числовым типам

Указывает, как обрабатывать пустые строки в выражениях CONVERT или CAST с числовым типом в качестве аргумента типа. Для этого параметра доступны следующие параметры:

  • Выберите простое преобразование , чтобы преобразовать выражения без каких-либо исправлений.
  • Если выбрана пустая строка в виде нуля числовых значений , то строковый параметр {s} будет заменен выражением CASE ltrim(rtrim({s})) WHEN "" THEN 0 else {s} END .

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Простое преобразование
Оптимистичный Простое преобразование
Полный Пустая строка как числовой ноль

Объединение значений NULL

Этот параметр указывает, как преобразовать объединение строк с помощью NULL. Для этого конкретного параметра можно задать следующие параметры:

  • Если выбран параметр "Оболочка с помощью функции ISNULL ", каждая неконстанта string_expression в объединениях будет заключена в ISNULL(string_expression) оболочку и NULLs будет заменена пустой строкой.
  • Сохранить текущий синтаксис будет поддерживать исходный синтаксис.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Сохранение текущего синтаксиса
Оптимистичный Сохранение текущего синтаксиса
Полный Используйте функцию ISNULL

Преобразование пустых строк

Этот параметр указывает, как преобразовать пустые строки. Для этого конкретного параметра можно задать следующие параметры:

  • Замена всех строковых выражений пробелом
  • Замена пустых строковых констант пробелом

Чтобы использовать поведение SQL Server/Azure SQL, выберите "Сохранить текущий синтаксис".

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Сохранение текущего синтаксиса
Оптимистичный Сохранение текущего синтаксиса
Полный Замена всех строковых выражений пробелом

Преобразование двоичной строки с использованием функций CONVERT и CAST

Преобразование двоичных значений в числа может возвращать разные значения на разных платформах. Например, на процессорах x86 результатом в ASE является CONVERT(integer, 0x00000100), а в SQL Server — 65536. ASE также возвращает разные значения в зависимости от порядка байтов.

Используйте этот параметр для управления тем, как SSMA преобразует выражения CONVERT и CAST, содержащие двоичные значения.

  • Выберите простое преобразование для преобразования выражений без каких-либо предупреждений или исправлений. Используйте этот параметр, если вы знаете, что сервер ASE имеет порядок байтов, который не требует каких-либо изменений двоичного значения.
  • Выберите «Преобразовать и исправить», чтобы SSMA преобразовал и исправил выражения для использования в SQL Server. Порядок байтов в литеральных константах будет отменен. Все остальные двоичные значения (например, двоичные переменные и столбцы) будут помечены ошибками. Используйте это значение, если известно, что сервер ASE имеет порядок байтов, требующий изменения двоичных значений.

Выберите "Преобразовать и пометить с предупреждением", чтобы SSMA преобразовал и исправил выражения, а также пометил все преобразованные выражения предупреждениями.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Преобразование и пометка с предупреждением
Оптимистичный Простое преобразование
Полный Преобразование и исправление

Динамический SQL

Используйте этот параметр, чтобы указать тип сообщения (предупреждение или ошибка), которое SSMA отображается в области вывода или списка ошибок при обнаружении динамического SQL в коде ASE.

  • Если выбрать "Преобразовать" и пометить предупреждением, SSMA преобразует динамический SQL и помечает инструкции с комментариями предупреждений.
  • Если выбрать Mark с ошибкой, SSMA пропустит преобразование и помечает инструкции с комментариями об ошибках.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Преобразование и пометка с предупреждением
Оптимистичный Преобразование и пометка с предупреждением
Полный Отметьте ошибку

Преобразование проверки равенства

В SQL Server/Azure SQL, если параметр ANSI_NULLS включен, SQL Server/Azure SQL возвращает UNKNOWN, когда любое сравнение равенства содержит значение NULL. Если ANSI_NULLS значение отключено, сравнения равенства, содержащие NULL значения, возвращают значение true, если сравниваемый столбец и выражение или два выражения являются обоими NULL. По умолчанию (ANSINULL OFF) сравнения на равенство в SAP ASE ведут себя как в SQL Server/Azure SQL при использовании ANSI_NULLS OFF.

  • Если выбрать простое преобразование, SSMA преобразует код ASE в синтаксис SQL Server/Azure SQL без дополнительных проверок значений NULL . Используйте этот параметр, если ANSI_NULLS находится OFF в SQL Server или Azure SQL или хотите пересмотреть сравнения равенства на основе каждого случая.
  • Если выбрать Учитывать значения NULL, SSMA добавит проверки для значений NULL, используя предложения IS NULL и IS NOT NULL.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Простое преобразование
Оптимистичный Простое преобразование
Полный Рассмотрим значения NULL

Форматирование строк

SQL Server/Azure SQL больше не поддерживает аргумент format_string в инструкциях PRINT и RAISERROR. Аргумент format_string позволил поместить заменяемые параметры непосредственно в строку, а затем заменить параметры во время выполнения. Вместо этого SQL Server требует полного ввода строки, используя либо строковый литерал, либо строку, созданную с помощью переменной. Дополнительные сведения см. в разделе PRINT (Transact-SQL) .

При обработке аргумента format_string SSMA может либо построить строковый литерал с использованием переменных, либо создать новую переменную и с её помощью построить строку.

  • Чтобы использовать строковый литерал для PRINT и RAISERROR функций, нажмите кнопку "Создать строку".

    В этом режиме, если инструкция PRINT или RAISERROR не использует заполнители и локальные переменные, инструкция не изменяется. Два символа процента (%%) изменяются на символ одного процента % в строковых литералах PRINT.

    Если оператор PRINT или RAISERROR использует заполнители и одну или несколько локальных переменных, например в следующем примере:

    PRINT 'Total: %1!%%', @percent
    

    SSMA преобразует его в следующий синтаксис:

    PRINT 'Total: '+ CAST(@percent AS varchar(max)) + '%'
    

    Если format_string, это переменная, например в следующем выражении:

    PRINT @fmt, @arg1, @arg2
    

    SSMA не может выполнить простое преобразование строк и создать новую переменную:

    DECLARE @print_format_1 varchar(max)
    SET @print_format_1 =
        REPLACE (@fmt, '%%', '%')
    SET @print_format_1 =
        REPLACE (@print_format_1, '%1!',
        CAST (@arg1 AS varchar(max)))
    SET @print_format_1 =
        REPLACE (@print_format_1, '%2!',
        CAST (@arg2 AS varchar(max)))
    PRINT @print_format_1
    

    При использовании режима создания новой строки SSMA предполагает, что параметр SQL Server имеет значение CONCAT_NULL_YIELDS_NULLOFF. Поэтому SSMA не проверяет наличие аргументов NULL.

  • Чтобы SSMA создавала новую переменную для каждого оператора PRINT и RAISERROR, а затем использовала эту переменную для строкового значения, выберите Создать новую переменную.

    В этом режиме, если оператор PRINT или RAISERROR не использует заполнители и локальные переменные, SSMA заменяет все двойные символы процента (%%) на одинарные символы процента, чтобы соответствовать синтаксису SQL Server/Azure SQL.

    Если инструкция PRINTRAISERROR использует заполнители и одну или несколько локальных переменных, например в следующем примере:

    PRINT 'Total: %1!%%', @percent
    

    SSMA преобразует его в следующий синтаксис:

    DECLARE @print_format_1 varchar(max)
    SET @print_format_1 = 'Total: %1!%'
    SET @print_format_1 =
        REPLACE (@print_format_1, '%1!',
        ISNULL(CAST (@percent AS VARCHAR(max)), ''))
    PRINT @print_format_1
    

    Если format_string, это переменная, например в следующем выражении:

    PRINT @fmt, @arg1, @arg2
    

    SSMA создает новую переменную следующим образом, проверяя наличие значений NULL в каждом аргументе:

    DECLARE @print_format_1 varchar(max)
    SET @print_format_1 =
        REPLACE (@fmt, '%%', '%')
    SET @print_format_1 =
        REPLACE (@print_format_1, '%1!',
        ISNULL(CAST (@arg1 AS varchar(max)),''))
    SET @print_format_1 =
        REPLACE (@print_format_1, '%2!',
        ISNULL(CAST (@arg2 AS varchar(max)),''))
    PRINT @print_format_1
    

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Создание новой строки
Оптимистичный Создание новой строки
Полный Создание новой переменной

Вставьте явное значение в столбец с меткой времени

SQL Server/Azure SQL не поддерживает вставку явных значений в столбец метки времени.

  • Чтобы исключить столбцы метки времени из INSERT инструкций, выберите "Исключить столбец".
  • Чтобы распечатать сообщение об ошибке каждый раз, когда столбец метки времени находится в операторе INSERT, выберите Пометить с ошибкой. В этом режиме INSERT операторы не будут преобразованы и будут помечены примечаниями об ошибках.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Исключить столбец
Оптимистичный Исключить столбец
Полный Отметьте ошибку

Хранение временных объектов, определенных в процедурах

Этот параметр указывает, должны ли временные определения объектов, которые отображаются в процедурах, храниться в исходных метаданных во время преобразования.

  • Выберите "Да" , чтобы сохранить в метаданных.
  • Выберите "Нет ", если объекты не должны храниться.
Режим Ценность
По умолчанию Да
Оптимистичный Да
Полный нет

Преобразование таблицы прокси-сервера

Указывает, преобразуются ли таблицы прокси-сервера ASE в таблицы SQL Server или Azure SQL или не преобразуются и код помечается примечаниями об ошибках.

  • Выберите "Преобразовать", чтобы преобразовать прокси-таблицы в обычные таблицы.
  • Выберите Отметить ошибку, чтобы просто добавить комментарии об ошибках к коду таблицы прокси.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Отметьте ошибку
Оптимистичный Отметьте ошибку
Полный Отметьте ошибку

Базовый номер сообщения RAISERROR

Сообщения пользователей ASE хранятся в каждой базе данных. Пользовательские сообщения SQL Server централизованно хранятся и становятся доступными в представлении sys.messages каталога. Кроме того, сообщения пользователя ASE начинаются с 20000, но сообщения об ошибках SQL Server начинаются с 50001.

Этот параметр задает номер, добавляемый в номер сообщения пользователя ASE, чтобы преобразовать его в сообщение пользователя SQL Server. Если в представлении каталога SQL Server sys.messages имеются сообщения пользователей, возможно, потребуется изменить это число, увеличив его. Это так, что преобразованные номера сообщений не конфликтуют с существующими номерами сообщений.

Обратите внимание на следующее:

  • Сообщения ASE в диапазоне 17000-19999 находятся в системной sysmessages таблице и не преобразуются.
  • Если номер сообщения, на который ссылается инструкция RAISERROR , является константой, SSMA добавит базовый номер сообщения в константу, чтобы определить новый номер сообщения пользователя.
  • Если номер сообщения, на который ссылается ссылка, является переменной или выражением, SSMA создаст промежуточную локальную переменную.
  • В оптимистическом режиме SSMA предполагает, что параметр CONCAT_NULL_YIELDS_NULL SQL Server OFF, и не выполняет проверок аргументов NULL.
  • В полном режиме SSMA проверяет наличие NULL аргументов.
  • RAISERROR с arg-list аргументом не преобразуется.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию 30001
Оптимистичный 30001
Полный 30001

Системные объекты

Используйте этот параметр, чтобы указать тип сообщения (предупреждение или ошибка), которое SSMA отображается в области вывода или списка ошибок при обнаружении использования системных объектов ASE.

  • Если выбрать "Преобразовать" и пометить предупреждением, SSMA преобразует ссылки на системные объекты и помечает операторы с предупреждениями.
  • Если выбрать Отметить как ошибку, SSMA не преобразует ссылки на системные объекты и пометит операторы комментариями об ошибках.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Преобразование и пометка с предупреждением
Оптимистичный Преобразование и пометка с предупреждением
Полный Отметьте ошибку

Неразрешенные идентификаторы

Используйте этот параметр для указания типа сообщения (Предупреждение или Ошибка), которое отображается SSMA в области вывода или списка ошибок, если не удается разрешить идентификатор.

  • Если выбрать "Преобразовать" и пометить как предупреждение, SSMA попытается преобразовать ссылки на неразрешенные идентификаторы и пометит выражения с предупреждениями.
  • Если вы выберете Пометить с ошибкой, SSMA не будет преобразовывать ссылки на неразрешенные идентификаторы и будет помечать записи с комментариями об ошибках.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Преобразование и пометка с предупреждением
Оптимистичный Преобразование и пометка с предупреждением
Полный Отметьте ошибку

Раздел системных функций

Функция CHARINDEX

В ASE CHARINDEX возвращает NULL только если все входные выражения являются NULL. SQL Server/Azure SQL возвращается NULL , если любое входное выражение имеет значение NULL.

  • Чтобы использовать поведение ASE, выберите "Заменить функцию". Все вызовы функции CHARINDEX заменяются вызовом либо функции CHARINDEX_VARCHAR, либо функции CHARINDEX_NVARCHAR, определенной пользователем, в зависимости от типа переданных параметров (созданных в пользовательской базе данных под именем схемы s2ss) для эмуляции поведения SAP ASE.
  • Чтобы использовать поведение SQL Server/Azure SQL, выберите "Сохранить текущий синтаксис".

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Сохранение текущего синтаксиса
Оптимистичный Сохранение текущего синтаксиса
Полный Замена функции

Функция DATALENGTH

SQL Server/Azure SQL и ASE отличаются в значении, возвращаемом DATALENGTH функцией, если значение является одним пространством. В этом случае SQL Server/Azure SQL возвращает 0, а ASE — 1.

  • Чтобы использовать поведение ASE, выберите "Заменить функцию". Все вызовы DATALENGTH функции заменяются CASE выражением для эмуляции поведения SAP ASE.
  • Чтобы использовать поведение SQL Server или Sql Azure по умолчанию, выберите "Сохранить текущий синтаксис".

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Сохранение текущего синтаксиса
Оптимистичный Сохранение текущего синтаксиса
Полный Замена функции

функция INDEX_COL

ASE поддерживает необязательный user_id аргумент функции INDEX_COL , однако SQL Server/Azure SQL не поддерживает этот аргумент. Если вы используете user_id аргумент, эта функция не может быть преобразована в синтаксис SQL Server/Azure SQL.

  • Чтобы использовать поведение ASE, выберите "Преобразовать функцию". Если код содержит user_id аргумент, SSMA отобразит ошибку.
  • Чтобы отобразить сообщение об ошибке при каждом INDEX_COL обнаружении, выберите "Пометить с ошибкой". SSMA не преобразует ссылки на функцию и пометит инструкцию комментариями о наличии ошибок.
Режим Ценность
По умолчанию Отметьте ошибку
Оптимистичный Отметьте ошибку
Полный Отметьте ошибку

функция INDEX_COLORDER

SQL Server/Azure SQL не имеет системной INDEX_COLORDER функции.

  • Чтобы использовать поведение ASE, выберите "Преобразовать функцию". Все вызовы функции INDEX_COLORDER заменяются вызовом определяемой пользователем функции с тем же именем INDEX_COLORDER (созданной в пользовательской базе данных в рамках схемы s2ss), которая эмулирует поведение SAP ASE.
  • Для вывода сообщения об ошибке при каждом обнаружении INDEX_COLORDER, выберите «Пометить с ошибкой». SSMA не преобразует ссылки на функцию и пометит инструкцию комментариями о наличии ошибок.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Отметьте ошибку
Оптимистичный Отметьте ошибку
Полный Отметьте ошибку

Функции LEFT и RIGHT

LEFT и RIGHT функции в ASE ведут себя по-разному для параметра отрицательной длины.

  • Чтобы использовать поведение ASE, выберите "Заменить функцию". Затем параметр длины заменяется CASE выражением, возвращающее NULL отрицательное значение.
  • Чтобы использовать поведение SQL Server, выберите "Сохранить текущий синтаксис".

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Сохранение текущего синтаксиса
Оптимистичный Сохранение текущего синтаксиса
Полный Замена функции

Замечание

Если параметр длины является литеральным значением, а не сложным выражением, значение длины всегда заменяется NULL независимо от параметра проекта.

функция NEXT_IDENTITY

SQL Server/Azure SQL не имеет системной NEXT_IDENTITY функции.

  • Чтобы использовать поведение ASE, выберите "Преобразовать функцию". Все вызовы NEXT_IDENTITY функции заменяются выражением (IDENT_CURRENT(parameter Value) + IDENT_INCR(parameter Value) , которое эмулирует поведение SAP ASE.
  • Для вывода сообщения об ошибке при каждом обнаружении NEXT_IDENTITY, выберите «Пометить с ошибкой». SSMA не преобразует ссылки на функцию и пометит инструкцию комментариями о наличии ошибок.

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Отметьте ошибку
Оптимистичный Отметьте ошибку
Полный Отметьте ошибку

По умолчанию/оптимистичный/полный режим: Пометка с ошибкой

Функция PATINDEX

Указывает, следует ли преобразовать PATINDEX функцию в соответствие с поведением SAP ASE. Суть в том, что ASE обрезает конечные пробелы в шаблоне поиска. Решение заключается в приведении выражения значения к типу данных фиксированной длины с максимальной точностью и применении функции rtrim к шаблону поиска.

  • Чтобы использовать поведение ASE, выберите "Использовать".
  • Чтобы использовать поведение SQL Server или Azure по умолчанию, выберите "Не использовать".

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Не используйте
Оптимистичный Не используйте
Полный Использование

ФУНКЦИЯ РЕПЛИЦИРОВАТЬ

Функция REPLICATE повторяет строку указанного числа раз. В ASE, если вы указываете повторять строку нулевое количество раз, результатом является NULL. В SQL Server/Azure SQL результатом является пустая строка.

  • Чтобы использовать поведение ASE, выберите "Заменить функцию". Все вызовы функции REPLICATE заменяются вызовом либо функции REPLICATE_VARCHAR, либо функции REPLICATE_NVARCHAR, определенной пользователем, в зависимости от типа переданных параметров (созданных в пользовательской базе данных под именем схемы s2ss) для эмуляции поведения SAP ASE.
  • Чтобы использовать поведение SQL Server или SQL Azure по умолчанию, выберите "Заменить функцию".

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Замена функции
Оптимистичный Замена функции
Полный Замена функции

Функция TRIM (LTRIM, RTRIM)

Этот параметр указывает, следует ли заменить вызовы TRIMLTRIM и RTRIM функции синтаксической функцией, эквивалентной SAP ASE, или сохранить текущий синтаксис. Для этого конкретного параметра доступны следующие опции:

  • Замена функции
  • Сохранение текущего синтаксиса

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Замена функции
Оптимистичный Замена функции
Полный Замена функции

Функция SUBSTRING

В ASE функция SUBSTRING(expression, start, length) возвращается NULL , если начальное значение больше числа символов в выражении, или если длина равна нулю. В SQL Server/Azure SQL эквивалентное выражение возвращает пустую строку.

  • Чтобы использовать поведение ASE, выберите "Заменить функцию". Все вызовы функции SUBSTRING заменяются вызовами определяемых пользователем функций SUBSTRING_VARCHAR, SUBSTRING_NVARCHAR или SUBSTRING_VARBINARY, в зависимости от типа переданных параметров (созданных в пользовательской базе данных под именем схемы s2ss) для эмуляции поведения SAP ASE.
  • Чтобы использовать поведение SQL Server/Azure SQL, выберите "Сохранить текущий синтаксис".

При выборе режима преобразования в поле "Режим " SSMA применяет следующий параметр:

Режим Ценность
По умолчанию Сохранение текущего синтаксиса
Оптимистичный Сохранение текущего синтаксиса
Полный Замена функции

Раздел "Таблицы"

Добавление первичного ключа

Создает новый первичный ключ в таблице SQL Server или SQL Azure, если в таблице SAP ASE нет первичного ключа или уникального индекса.

Режим Ценность
По умолчанию нет
Оптимистичный нет
Полный Да

Замечание

При подключении к SQL Azure значение "Да " по умолчанию.

См. также

Справочник по пользовательскому интерфейсу (SybaseToSQL)