Dela via


Projektinställningar (konvertering) (SybaseToSQL)

Sidan konvertering i dialogrutan Projektinställningar innehåller inställningar som anpassar hur SSMA konverterar SAP Adaptive Server Enterprise-syntax (ASE) till SQL Server eller Azure SQL-syntax.

Fönstret Konvertering är tillgängligt i dialogrutorna Projektinställningar och Standardprojektinställningar.

  • Om du vill ange inställningar för alla SSMA-projekt går du till menyn Verktyg och väljer Standardprojektinställningar, klickar på Allmänt längst ned i den vänstra rutan och klickar sedan på Konvertering.

  • Om du vill ange inställningar för det aktuella projektet går du till menyn Verktyg, väljer Projektinställningar, klickar på Allmänt längst ned i det vänstra fönstret och klickar sedan på Konvertering.

Diverse avsnitt

@@ERROR

SQL Server/Azure SQL och ASE använder olika felkoder.

Använd den här inställningen om du vill ange vilken typ av meddelande (varning eller fel) som visas i fönstret Utdata eller Fellista när det påträffar en referens till @@ERROR i ASE-koden.

  • Om du väljer Konvertera och markera med varning, konverterar SSMA uttalandena och markerar dem med varningskommentarer.
  • Om du väljer Markera med felhoppar SSMA över konverteringen och markerar satserna med felkommentarer.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Konvertera och markera med varning
Optimistisk Konvertera och markera med varning
Fullständig Markera med fel

Konvertering av LIKE-operator

Anger om du vill konvertera LIKE operander för att matcha SAP ASE-beteende. Poängen är att ASE trimmar avslutande blanksteg i ett liknande mönster. Lösningen är att göra en typomvandling av det korrekta uttrycket till en fastlängd datatyp med maximal precision.

  • Välj Enkel konvertering för att konvertera uttrycken utan någon korrigering.
  • Om du vill använda ASE-beteendet väljer du Cast till fast längd.

När du väljer ett konverteringsläge i rutan Läge tillämpar SSMA följande inställning:

Läge Värde
Förvalt Enkel konvertering
Optimistisk Enkel konvertering
Helt Gjuten till fast längd

KONVERTERA eller CAST-tomma strängar till numeriska typer

Anger hur du hanterar tomma eller blanka strängar i CONVERT- eller CAST-uttryck med numerisk typ som datatype-argument. Följande alternativ är tillgängliga för den här inställningen:

  • Välj Enkel konvertering för att konvertera uttrycken utan någon korrigering.
  • Om Tom sträng som nollvärde har valts, ersätts strängparametern {s} med CASE ltrim(rtrim({s})) WHEN "" THEN 0 else {s} END uttrycket.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Förvald Enkel konvertering
Optimistisk Enkel konvertering
Fullständig Tom sträng som noll numerisk

Sammanfogning av NULL

Den här inställningen anger hur du konverterar strängsammanfogning med NULL. Följande alternativ kan anges för den här inställningen:

  • Om alternativet Wrap med funktionen ISNULL är valt, kommer varje icke-konstant string_expression i sammanfogningen att omslutas med ISNULL(string_expression) och NULLersättas med en tom sträng.
  • Behåll aktuell syntax kommer att bevara den ursprungliga syntaxen.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Förvald Behåll aktuell syntax
Optimistisk Behåll aktuell syntax
Full Omsluta med funktionen ISNULL

Konvertering av tomma strängar

Den här inställningen anger hur du konverterar tomma strängar. Följande alternativ kan anges för den här inställningen:

  • Ersätt alla stränguttryck med blanksteg
  • Ersätt tomma strängkonstanter med blanksteg

Om du vill använda SQL Server/Azure SQL-beteendet väljer du Behåll aktuell syntax.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Förval Behåll aktuell syntax
Optimistisk Behåll aktuell syntax
Full Ersätt alla stränguttryck med mellanslag

KONVERTERA och TILLDELA binär strängkonvertering

Konverteringen av binära värden till tal kan returnera olika värden på olika plattformar. På x86-processorer returnerar CONVERT(integer, 0x00000100) till exempel 65536 i ASE, men 256 i SQL Server. ASE returnerar också olika värden beroende på byteordning.

Använd den här inställningen för att styra hur SSMA konverterar CONVERT och CAST uttryck som innehåller binära värden:

  • Välj Enkel konvertering för att konvertera uttrycken utan några varningar eller korrigeringar. Använd den här inställningen om du vet att ASE-servern har en byteordning som inte kräver några ändringar av det binära värdet.
  • Välj Konvertera och korrigera så att SSMA konverterar och korrigerar uttrycken för användning på SQL Server. Byteordningen i literala konstanter kommer att omvändas. Alla andra binära värden (till exempel binära variabler och kolumner) markeras med fel. Använd det här värdet om du vet att ASE-servern har en byteordning som kräver ändringar i binära värden.

Välj Konvertera och markera med varning om du vill att SSMA ska konvertera och korrigera uttrycken och markera alla konverterade uttryck med varningskommentare.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Förval Konvertera och markera med varning
Optimistisk Enkel konvertering
Fylld Konvertera och korrigera

Dynamisk SQL

Använd den här inställningen för att specificera vilken typ av meddelande (Varning eller Fel) som SSMA visar i fönstret Utdata eller Fellista när dynamisk SQL påträffas i ASE-koden.

  • Om du väljer Konvertera och markera med varningkonverterar SSMA den dynamiska SQL-koden och markerar uttrycken med varningskommentare.
  • Om du väljer Markera med felkommer SSMA att hoppa över konverteringen och markera uttalandena med felkommentarer.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Konvertera och markera med varning
Optimistisk Konvertera och markera med varning
Fullständig Markera med fel

Konvertering av likhetskontroll

Om inställningen ANSI_NULLS är aktiverad i SQL Server/Azure SQL returnerar SQL Server/Azure SQL UNKNOWN när en likhetsjämförelse innehåller ett NULL värde. Om ANSI_NULLS är av, returnerar jämförelser som innehåller NULL-värden sant när både den jämförda kolumnen och uttrycket, eller två uttryck, är NULL. Som standard (ANSINULL OFF) fungerar SAP ASE-likhetsjämförelser som SQL Server/Azure SQL med ANSI_NULLS OFF.

  • Om du väljer Enkel konverteringkonverterar SSMA ASE-koden till SQL Server/Azure SQL-syntax utan extra kontroller av NULL värden. Använd den här inställningen om ANSI_NULLS är OFF i SQL Server/Azure SQL eller om du vill revidera likhetsjämförelser per fall.
  • Om du väljer Överväg NULL-värden, kommer SSMA lägga till kontroller av NULL-värden med hjälp av villkoren IS NULL och IS NOT NULL.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Mode Värde
Standard Enkel konvertering
Optimistisk Enkel konvertering
Fylld Överväg NULL-värden

Formatera strängar

SQL Server/Azure SQL stöder inte längre argumentet format_string i PRINT- och RAISERROR-instruktioner. Argumentet format_string tillät att man placerade utbytbara parametrar direkt i strängen, för att sedan ersätta parametrarna vid körning. I stället kräver SQL Server den fullständiga strängen med hjälp av antingen en strängliteral eller en sträng som skapats med hjälp av en variabel. Mer information finns i avsnittet PRINT (Transact-SQL).

När SSMA stöter på ett format_string argument kan det antingen skapa en strängliteral med hjälp av variablerna eller skapa en ny variabel och skapa en sträng med hjälp av variabeln.

  • Om du vill använda en strängliteral för funktionerna PRINT och RAISERROR väljer du Skapa ny sträng.

    I det här läget, om en PRINT- eller RAISERROR-instruktion inte använder platshållare och lokala variabler, ändras instruktionen inte. Dubbla procenttecken (%%) ändras till ett procenttecken % i PRINT-strängliteraler.

    Om en PRINT- eller RAISERROR-instruktion använder platshållare och en eller flera lokala variabler, till exempel i följande exempel:

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

    SSMA konverterar den till följande syntax:

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

    Om format_string är en variabel, till exempel i följande instruktion:

    PRINT @fmt, @arg1, @arg2
    

    SSMA kan inte utföra en enkel strängkonvertering och måste skapa en ny variabel:

    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
    

    När den använder Skapa ny sträng läge förutsätter SSMA att SQL Server-alternativet CONCAT_NULL_YIELDS_NULL är OFF. Därför söker SSMA inte efter null-argument.

  • Om du vill att SSMA ska skapa en ny variabel för varje PRINT- och RAISERROR-instruktion och sedan använda variabeln för strängvärdet väljer du Skapa ny variabel.

    I det här läget, om en PRINT- eller RAISERROR-instruktion inte använder platshållare och lokala variabler, ersätter SSMA alla dubbla procenttecken (%%) med enprocentstecken för att följa SQL Server/Azure SQL-syntaxen.

    Om en PRINT- eller RAISERROR-instruktion använder platshållare och en eller flera lokala variabler, till exempel i följande exempel:

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

    SSMA konverterar den till följande syntax:

    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
    

    Om format_string är en variabel, till exempel i följande instruktion:

    PRINT @fmt, @arg1, @arg2
    

    SSMA skapar en ny variabel enligt följande och söker efter nullvärden i varje argument:

    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
    

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Mode Värde
Förvalt Skapa ny sträng
Optimistisk Skapa ny sträng
Fullständig Skapa ny variabel

Infoga ett explicit värde i en tidsstämpelkolumn

SQL Server/Azure SQL stöder inte infogning av explicita värden i en tidsstämpelkolumn.

  • Om du vill exkludera tidsstämpelkolumner från INSERT-instruktioner väljer du Exkludera kolumn.
  • Om du vill skriva ut ett felmeddelande varje gång en tidsstämpelkolumn finns i en INSERT-instruktion väljer du Markera med fel. I det här läget konverteras inte INSERT-instruktionerna och de markeras med felkommentarer.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Exkludera kolumn
Optimistisk Exkludera kolumn
Fullständig Markera med fel

Lagra temporära objekt som definierats i procedurer

Den här inställningen anger om de temporära objektdefinitioner som visas i procedurerna ska lagras i källmetadata under konverteringen.

  • Välj Ja att lagra i metadata.
  • Välj Ingen om objekten inte behöver lagras.
Läge Värde
Förvald Ja
Optimistisk Ja
Fullständig Nej

Proxytabellkonvertering

Anger om ASE-proxytabeller konverteras till SQL Server/Azure SQL-tabeller eller om de inte konverteras och koden markeras med felkommentarer.

  • Välj Konvertera för att konvertera proxytabeller till vanliga tabeller.
  • Välj Markera med fel för att helt enkelt markera proxytabellkoden med felkommenteringar.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Förvald Markera med fel
Optimistisk Markera med fel
Fylld Markera med fel

RAISERROR-basmeddelandenummer

ASE-användarmeddelanden lagras i varje databas. SQL Server-användarmeddelanden lagras centralt och görs tillgängliga via sys.messages katalogvy. Dessutom startar ASE-användarmeddelanden på 20000, men SQL Server-felmeddelanden börjar på 50001.

Den här inställningen anger det nummer som ska läggas till i ASE-användarens meddelandenummer för att konvertera det till ett SQL Server-användarmeddelande. Om SQL Server har användarmeddelanden i sys.messages katalogvy kan du behöva ändra det här talet till ett högre värde. Detta gör att de konverterade meddelandenumren inte står i konflikt med befintliga meddelandenummer.

Observera följande:

  • ASE-meddelanden i intervallet 17000-19999 kommer från systemtabellen sysmessages och konverteras inte.
  • Om meddelandenumret som refereras i RAISERROR-instruktionen är en konstant lägger SSMA till basmeddelandenumret i konstanten för att fastställa det nya användarmeddelandenumret.
  • Om meddelandenumret som refereras är en variabel eller ett uttryck skapar SSMA en mellanliggande lokal variabel.
  • I optimistiskt lägeförutsätter SSMA att SQL Server-alternativet CONCAT_NULL_YIELDS_NULL är OFF och inte söker efter NULL argument.
  • I fullständigt lägesöker SSMA efter NULL argument.
  • RAISERROR med argumentet arg-list konverteras inte.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Mode Värde
Förval 30001
Optimistisk 30001
Hel 30001

Systemobjekt

Använd den här inställningen om du vill ange vilken typ av meddelande (varning eller fel) som visas i fönstret Utdata eller fellista när ase-systemobjekt används.

  • Om du väljer Konvertera och markerar med varning, konverterar SSMA referenser till systemobjekt och markerar instruktioner med varningskommentarer.
  • Om du väljer Markera med felkommer SSMA inte att konvertera referenser till systemobjekt och markerar uttalanden med felkommentarer.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Konvertera och markera med varning
Optimistisk Konvertera och markera med varning
Fullständig / Fylld Markera med fel

Olösta identifierare

Använd den här inställningen om du vill ange vilken typ av meddelande (varning eller fel) som SSMA visar i fönstret Utdata eller fellista när det inte går att matcha en identifierare.

  • Om du väljer Konvertera och markera med varning, försöker SSMA konvertera referenser till olösta identifierare och markerar instruktioner med varningskommentarer.
  • Om du väljer Markera med fel, kommer SSMA inte att konvertera referenser till oordnade identifierare och kommer att markera uttalanden med felkommentarer.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Förvalt Konvertera och markera med varning
Optimistisk Konvertera och markera med varning
Full Markera med fel

Avsnittet Systemfunktioner

Funktionen CHARINDEX

I ASE returnerar CHARINDEXNULL endast om alla indatauttryck är NULL. SQL Server/Azure SQL returnerar NULL om något indatauttryck är NULL.

  • Om du vill använda ASE-beteendet väljer du Replace-funktionen. Alla anrop till CHARINDEX-funktionen ersätts med ett anrop till antingen CHARINDEX_VARCHAR eller CHARINDEX_NVARCHAR användardefinierad funktion baserat på vilken typ av parametrar som skickas (skapas i användardatabasen under schemanamnet s2ss) för att emulera SAP ASE-beteendet.
  • Om du vill använda SQL Server/Azure SQL-beteendet väljer du Behåll aktuell syntax.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Behåll nuvarande syntax
Optimistisk Behåll aktuell syntax
Fullt Ersätt funktionen

Funktionen DATALENGTH

SQL Server/Azure SQL och ASE skiljer sig åt i det värde som returneras av funktionen DATALENGTH när värdet är ett enda blanksteg. I det här fallet returnerar SQL Server/Azure SQL 0 och ASE returnerar 1.

  • Om du vill använda ASE-beteendet väljer du Replace-funktionen. Alla anrop till DATALENGTH-funktionen ersätts med CASE uttryck för att emulera SAP ASE-beteende.
  • Om du vill använda standardbeteendet för SQL Server/Azure SQL väljer du Behåll aktuell syntax.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Mode Värde
Standard Behåll aktuell syntax
Optimistisk Behåll aktuell syntax
Fullständig Funktionen Ersätt

INDEX_COL-funktionen

ASE stöder ett valfritt user_id argument för funktionen INDEX_COL. SQL Server/Azure SQL stöder dock inte det här argumentet. Om du använder argumentet user_id kan den här funktionen inte konverteras till SQL Server/Azure SQL-syntax.

  • Om du vill använda ASE-beteendet väljer du Konvertera funktion. Om koden innehåller argumentet user_id visar SSMA ett fel.
  • Om du vill visa ett felmeddelande varje gång INDEX_COL påträffas väljer du Markera med fel. SSMA kommer inte att konvertera referenser till funktionen och kommer att kommentera uttalandet med felkommentarer.
Läge Värde
Standard Markera med fel
Optimistisk Markera med fel
Fullständig Markera med fel

Funktionen INDEX_COLORDER

SQL Server/Azure SQL har ingen INDEX_COLORDER systemfunktion.

  • För att använda ASE-beteendet väljer du konverteringsfunktionen. Alla anrop till INDEX_COLORDER-funktionen ersätts med ett anrop till en användardefinierad funktion med samma namn INDEX_COLORDER (skapas i användardatabasen under schemanamnet s2ss) som emulerar SAP ASE-beteendet.
  • Om du vill skriva ut ett felmeddelande varje gång INDEX_COLORDER påträffas väljer du Markera med fel. SSMA konverterar inte referenser till funktionen och markerar uttalandet med kommentarer om fel.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Markera med fel
Optimistisk Markera med fel
Full Markera med fel

FUNKTIONER FÖR VÄNSTER och HÖGER

LEFT- och RIGHT-funktionerna i ASE fungerar annorlunda för parametern negativ längd.

  • Om du vill använda ASE-beteendet väljer du Ersätt funktion. Parametern length ersätts sedan med CASE uttryck som returnerar NULL för negativt värde.
  • Om du vill använda SQL Server-beteendet väljer du Behåll aktuell syntax.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standardvärde Behåll aktuell syntax
Optimistisk Behåll aktuell syntax
Helt Funktionen Ersätt

Notis

Om längdparametern är ett literalvärde och inte ett komplext uttryck ersätts längdvärdet alltid med NULL oavsett projektinställning.

Funktionen Next_Identity

SQL Server/Azure SQL har ingen NEXT_IDENTITY systemfunktion.

  • Om du vill använda ASE-beteendet väljer du Konvertera funktion. Alla anrop till funktionen NEXT_IDENTITY ersätts med uttryck (IDENT_CURRENT(parameter Value) + IDENT_INCR(parameter Value) som emulerar SAP ASE-beteendet.
  • Om du vill skriva ut ett felmeddelande varje gång NEXT_IDENTITY påträffas väljer du Markera med fel. SSMA konverterar inte referenser till funktionen och markerar uttrycket med felkommentarer.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Förval Markera med fel
Optimistisk Markera som felaktig
Full Markera med fel

Standard/Optimistiskt/Fullständigt läge: Markera med fel

Funktionen PATINDEX

Anger om du vill konvertera PATINDEX funktion för att matcha SAP ASE-beteende. Poängen är att ASE trimmar avslutande mellanslag i ett sökmönster. Lösningen är att skapa ett gjutet värdeuttryck till en datatyp med fast längd med maximal precision och tillämpa rtrim funktion på sökmönstret.

  • Om du vill använda ASE-beteendet väljer du Använd.
  • Om du vill använda standardbeteendet för SQL Server/Azure SQL väljer du Använd inte.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Använd inte
Optimistisk Använd inte
Fullständig Använd

Funktionen REPLIKERA

Funktionen REPLICATE upprepar en sträng det angivna antalet gånger. Om du anger att strängen ska upprepas noll gånger i ASE blir resultatet NULL. I SQL Server/Azure SQL är resultatet en tom sträng.

  • Om du vill använda ASE-beteendet väljer du ersättningsfunktionen. Alla anrop till REPLICATE-funktionen ersätts med ett anrop till antingen REPLICATE_VARCHAR eller REPLICATE_NVARCHAR användardefinierad funktion baserat på vilken typ av parametrar som skickas (skapas i användardatabasen under schemanamnet s2ss) för att emulera SAP ASE-beteendet.
  • Om du vill använda standardbeteendet för SQL Server/Azure SQL väljer du Ersätt funktion.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Mode Värde
Standard Ersätt funktion
Optimistisk Ersätt funktion
Fullständig Ersätt funktion

Funktionen TRIM (LTRIM, RTRIM)

Den här inställningen anger om du vill ersätta anrop till TRIM, LTRIM och RTRIM funktioner med SAP ASE-motsvarande syntaxfunktioner eller behålla den aktuella syntaxen. Följande alternativ finns för den här inställningen:

  • Ersätt-funktion
  • Behåll aktuell syntax

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Läge Värde
Standard Funktionen Ersätt
Optimistisk Ersätt funktion
Full Funktionen Ersätt

Funktionen SUBSTRING

I ASE returnerar funktionen SUBSTRING(expression, start, length)NULL om ett startvärde som är större än antalet tecken i uttrycket anges, eller om längden är lika med noll. I SQL Server/Azure SQL returnerar motsvarande uttryck en tom sträng.

  • Om du vill använda ASE-beteendet väljer du Replace-funktionen. Alla anrop till funktionen SUBSTRING ersätts med ett anrop till SUBSTRING_VARCHAR eller SUBSTRING_NVARCHAR eller SUBSTRING_VARBINARY användardefinierad funktion baserat på vilken typ av parametrar som skickas (skapas i användardatabasen under schemanamnet s2ss) för att emulera SAP ASE-beteendet.
  • Om du vill använda SQL Server/Azure SQL-beteendet väljer du Behåll aktuell syntax.

När du väljer ett konverteringsläge i rutan läge tillämpar SSMA följande inställning:

Mode Värde
Förval Behåll aktuell syntax
Optimistisk Behåll aktuell syntax
Fylld Funktionen Ersätt

Avsnittet Tabeller

Lägg till primärnyckel

Skapar en ny primärnyckel i SQL Server- eller Azure SQL-tabellen om en SAP ASE-tabell inte har någon primärnyckel eller ett unikt index.

Läge Värde
Standard Nej
Optimistisk Nej
Full Ja

Not

När du är ansluten till Azure SQL är det Ja som standard.

Se även

användargränssnittsreferens (SybaseToSQL)