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


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

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

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

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

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

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

@@ERROR

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

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

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

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

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

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

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

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

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

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

CONVERT или CAST пустые строки в числовые типы

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

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

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

Режим значение
По умолчанию. Простое преобразование
Optimistic Простое преобразование
Полный Пустая строка в виде нуля числовых

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

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

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

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

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

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

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

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

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

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

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

Преобразование двоичной строки CONVERT и CAST

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

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

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

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

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

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

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

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

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

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

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

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

В 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 применяет следующий параметр:

Режим значение
По умолчанию. Простое преобразование
Optimistic Простое преобразование
Полный Рассмотрим значения 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_NULL OFF. Поэтому SSMA не проверяет наличие аргументов NULL.

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

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

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

    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 применяет следующий параметр:

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

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

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

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

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

Режим значение
По умолчанию. Исключить столбец
Optimistic Исключить столбец
Полный Пометка с ошибкой

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

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

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

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

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

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

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

Режим значение
По умолчанию. Пометка с ошибкой
Optimistic Пометка с ошибкой
Полный Пометка с ошибкой

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

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

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

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

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

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

Режим значение
По умолчанию. 30001
Optimistic 30001
Полный 30001

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

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

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

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

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

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

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

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

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

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

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

Функция CHARINDEX

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

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

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

Режим значение
По умолчанию. Сохранение текущего синтаксиса
Optimistic Сохранение текущего синтаксиса
Полный Замена функции

Функция DATALENGTH

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

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

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

Режим значение
По умолчанию. Сохранение текущего синтаксиса
Optimistic Сохранение текущего синтаксиса
Полный Замена функции

функция INDEX_COL

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

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

функция INDEX_COLORDER

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

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

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

Режим значение
По умолчанию. Пометка с ошибкой
Optimistic Пометка с ошибкой
Полный Пометка с ошибкой

Функции LEFT и RIGHT

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

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

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

Режим значение
По умолчанию. Сохранение текущего синтаксиса
Optimistic Сохранение текущего синтаксиса
Полный Замена функции

Заметка

Если параметр длины является литеральным значением, а не сложным выражением, значение длины всегда заменяется 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 применяет следующий параметр:

Режим значение
По умолчанию. Пометка с ошибкой
Optimistic Пометка с ошибкой
Полный Пометка с ошибкой

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

Функция PATINDEX

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

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

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

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

REPLICATE, функция

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

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

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

Режим значение
По умолчанию. Замена функции
Optimistic Замена функции
Полный Замена функции

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

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

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

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

Режим значение
По умолчанию. Замена функции
Optimistic Замена функции
Полный Замена функции

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 применяет следующий параметр:

Режим значение
По умолчанию. Сохранение текущего синтаксиса
Optimistic Сохранение текущего синтаксиса
Полный Замена функции

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

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

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

Режим значение
По умолчанию. No
Optimistic No
Полный Да

Заметка

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

См. также

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