SnowConvert AI – Funktionsunterschiede zwischen SQL Server und Azure Synapse¶
Applies to
SQL Server
Azure Synapse Analytics
SSC-FDM-TS0001¶
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-TS0077 documentation.
Beschreibung¶
Diese Meldung wird angezeigt, wenn es eine Sortierklausel gibt, die in Snowflake nicht unterstützt wird.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0002¶
Beschreibung¶
Diese Meldung wird angezeigt, wenn es eine Sortierklausel gibt, die in Snowflake nicht unterstützt wird.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0003¶
XP_LOGININFO zugeordnet zu benutzerdefiniertem UDF
Beschreibung¶
Diese Meldung wird angezeigt, wenn die XP_LOGININFO-Prozedur ausgeführt wird und den folgenden Satz von Spalten zurückgibt (siehe SQL SERVER-Dokumentation für weitere Informationen).
| account name | type | privilege | mapped login name | permission path |
To replicate this behavior, there is a query that select the columns from the APPLICABLE_ROLES view in Snowflake, which returns the following set of columns (See Snowflake documentation for more info)
GRANTEE |
ROLE_NAME |
ROLE_OWNER |
IS_GRANTABLE |
|---|
Ursprüngliche SQL Server-Spalten werden wie in der nächsten Tabelle gezeigt zugeordnet. Möglicherweise sind sie nicht vollständig gleichwertig.
| SQL Server | Snowflake | |
|---|---|---|
| account name | GRANTEE | |
| type | ROLE_OWNER | |
| privilege | ROLE_NAME | |
| mapped login name | GRANTEE | |
| permission path | NULL |
Beispielcode¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0004¶
Beschreibung¶
This message is shown when a BULK INSERT was transformed and a PUT command is added to the output code. It happens because the PUT command cannot be executed using the SnowSQL Web UI. To successfully execute it, any user should have the SnowCLI installed before.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Installieren Sie SnowCLI.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0005¶
TRY_CONVERT/TRY_CAST konnte nicht konvertiert werden in TRY_CAST
Beschreibung¶
This FDM is added when a TRY_CONVERT or TRY_CAST cannot be converted to a TRY_CAST in Snowflake.
Die [TRY_CAST]-Funktion (https://docs.snowflake.com/en/sql-reference/functions/try_cast) von Snowflake hat eine Einschränkung, da sie nur die Konvertierung von Zeichenfolgenausdrücken erlaubt. Die TRY_CONVERT- und TRY_CAST-Funktionen hingegen unterstützen Ausdrücke beliebiger Datentypen.
Derzeit wird die Umwandlung von TRY_CONVERT oder TRY_CAST in die TRY_CAST-Funktion von Snowflake nur für Zeichenfolgenausdrücke oder für Ausdrücke durchgeführt, die das Tool im jeweiligen Kontext als Zeichenfolgen identifizieren kann.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0006¶
Die EXECUTE AS ‚user_name‘-Klausel existiert in Snowflake nicht, und der Benutzer, der die Prozedur aufruft, muss über alle erforderlichen Berechtigungen verfügen.
Beschreibung¶
Diese Nachricht wird angezeigt, wenn SnowConvert AI eine Prozedur mit einer EXECUTEAS „user_name“-Klausel findet. Dies wird in Snowflake nicht unterstützt, daher wird es in EXECUTE AS CALLER. geändert.
Diese Klausel gibt den Sicherheitskontext an, in dem die Prozedur ausgeführt werden soll.
Bemerkung
Weitere Informationen dazu finden Sie in der Dokumentation über die Funktion der Klausel.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0007¶
FOR REPLICATION-Klausel existiert nicht in Snowflake.
Beschreibung¶
Diese Nachricht wird angezeigt, wenn SnowConvert AI eine Prozedur mit einer FORREPLICATION-Klausel findet. Dies wird in Snowflake nicht unterstützt, daher wird sie entfernt.
Diese Klausel gibt an, dass die Prozedur für die Replikation erstellt wird. Folglich kann es nicht auf dem Abonnent ausgeführt werden.
Bemerkung
Weitere Informationen dazu finden Sie in der Dokumentation zur Funktion der Klausel.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0008¶
FORMATMESSAGE-Funktion wurde konvertiert in UDF
Beschreibung¶
Diese Warnung wurde hinzugefügt, weil die Funktion FORMATMESSAGE verwendet wird und durch FORMATMESSAGE_UDF ersetzt wurde. Der Grund für das Hinzufügen dieser Warnung ist, dass die FORMATMESSAGE_UDF, die die ursprünglichen FORMATMESSAGE ersetzt, nicht alle Formatvarianten korrekt verarbeitet und unter bestimmten Bedingungen einen Fehler auslösen kann.
Numerische Werte ohne Vorzeichen, die als negativ angegeben werden, behalten das Vorzeichen bei, anstatt den Wert umzuwandeln. Außerdem wird der Platzhalter %I64d von UDF nicht unterstützt, sodass bei seiner Verwendung ein Fehler ausgelöst wird.
In the FORMATMESSAGE_UDF, an error will happen if the given number of arguments is different than the number of placeholders.
Dieses UDF unterstützt nicht die Verwendung von Nachrichten-IDs.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Vermeiden Sie die Verwendung des Platzhalters
%I64din der Nachricht.Verwenden Sie die Nachricht direkt als Zeichenfolge, anstatt eine Nachrichten-ID für das erste Argument zu verwenden.
Stellen Sie sicher, dass die Anzahl der Platzhalter mit der Anzahl der Argumente nach der Meldung übereinstimmt.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0009¶
„Verschlüsselt mit“ wird in Snowflake nicht unterstützt.
Beschreibung¶
Diese Warnung wird hinzugefügt, wenn in einer Spaltendefinition ein ENCRYPTEDWITH-Attribut verwendet wird. Da dies in Snowflake nicht unterstützt wird, wird es entfernt und es wird eine Warnung hinzugefügt.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0010¶
CURRENT_DATABASE-Funktion verhält sich in bestimmten Fällen unterschiedlich.
Beschreibung¶
Diese EWI wird hinzugefügt, wenn die Funktion DB_NAME in CURRENT_DATABASE umgewandelt wird, da Snowflake den Parameter database_id nicht unterstützt und die Funktion CURRENT_DATABASE immer den Namen der aktuellen Datenbank zurückgibt.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0011¶
Standardwert in Snowflake nicht zulässig.
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-TS0078.
Beschreibung¶
Dieser Fehler wird dem Code hinzugefügt, wenn Ausdrücke wie Funktionsaufrufe, Variablennamen oder benannte Konstanten auf die Standardoption folgen.
Snowflake unterstützt nur explizite Konstanten wie Zahlen oder Zeichenfolgen.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0012¶
Informationen für die Spalte wurden nicht gefunden. STRING wird verwendet, um den CAST-Vorgang abzugleichen.
Beschreibung¶
Diese EWI wird in Table-Valued User-Defined Functions hinzugefügt, wenn der Rückgabetyp einer Spalte während der Konvertierung nicht bestimmt werden kann. STRING wird standardmäßig verwendet, um dem CAST-Vorgang in der SELECT-Anweisung zu entsprechen. <!–TODO: search for a broken reference.->
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Der Benutzer sollte prüfen, welcher Datentyp nicht erkannt werden konnte, und ihn in der Statement-Definition
RETURNS TABLEentsprechend anpassen.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0013¶
Snowflake Scripting-Cursorzeilen sind nicht veränderbar.
Beschreibung¶
Diese EWI wird hinzugefügt, wenn Cursor für Änderungen im Eingabecode offen sind. Snowflake Scripting erlaubt es nicht, Cursorzeilen zu ändern.
Beispielcode:¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0014¶
Berechnete Spalte transformiert
Beschreibung¶
Diese Warnung wird hinzugefügt, wenn eine berechnete Spalte aus SQL Server in ihr Snowflake-Äquivalent umgewandelt wird. Sie wurde hinzugefügt, weil in einigen Fällen die funktionale Äquivalenz beeinträchtigt werden könnte.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich. Dies ist nur informativ.
Fügen Sie manuelle Änderungen an dem nicht transformierten Ausdruck hinzu.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0016¶
XML-Spalten in Snowflake haben möglicherweise ein anderes Format
Beschreibung¶
This warning is added when an SQL Server FOR XML clause with a non-empty path is transformed to its Snowflake equivalent using FOR_XML_UDF. It is added because columns in XML could be different.
Bemerkung
FOR XML PATH('') (empty path without a ROOT clause) is a common SQL Server string concatenation pattern and is not an XML generation scenario. These cases are transformed to LISTAGG instead of FOR_XML_UDF, and this FDM is not emitted. See the SELECT FOR section for details.
Codebeispiel¶
Angenommen, die folgende Tabelle hat den Namen: Mitarbeiter.
ID |
Name |
Hinweis |
|---|---|---|
1 |
Kinslee Park |
Entwickler |
2 |
Ezra Mata |
Entwickler |
3 |
Aliana Quinn |
Manager |
Eingabecode:¶
Code¶
Ausgabe¶
Generierter Code:¶
Code¶
Ausgabe¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich. Dies ist nur informativ.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0017¶
CURRENT_USER-Funktion unterstützt keine Benutzer-ID als Parameter.
Beschreibung¶
Diese EWI wird hinzugefügt, wenn Funktionen wie SUSER_NAME oder SUSER_SNAME den Benutzerbezeichner als Parameter enthalten, da dieser in der CURRENT_USER-Funktion von Snowflake nicht unterstützt wird.
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0018¶
Der Datenbank-Konsolenbefehl wird nicht unterstützt
Bemerkung
Diese FDM ist veraltet. Weitere Informationen finden Sie unter SSC-EWI-TS0079.
Beschreibung¶
This FDM is added when SnowConvert AI finds a DBCC statement inside the input code.
Most DBCC statements are not supported in Snowflake.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Es sind keine zusätzlichen Benutzeraktionen erforderlich. Dies ist nur informativ.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0019¶
Die Fehlermeldung RAISERROR kann aufgrund des SQL-Zeichenfolgenformats abweichen.
Beschreibung¶
Diese EWI wird hinzugefügt, um darauf hinzuweisen, dass sich die Fehlermeldung RAISERROR aufgrund des SQL-Zeichenkettenformats unterscheiden kann.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0020¶
Die Standard-Einschränkung wurde auskommentarisiert und wurde möglicherweise zu einer Tabellendefinition hinzugefügt.
Beschreibung¶
Diese FDM wird hinzugefügt, wenn die Standardeinschränkung in einer Alter Table-Anweisung vorhanden ist.
Currently, support for that constraint is unavailable. A workaround to transform it is to define the table before using Alter Table. This allows SnowConvert AI to identify the references, and the default constraint is consolidated in the table definition. Otherwise, the constraint is only commented out.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Bekannte Probleme¶
Wenn für dieselbe Spalte verschiedene Standardeinschränkungen deklariert sind, wird in der Anweisung „Create Tabel“ nur die erste berücksichtigt.
Wenn eine Standardeinschränkung für eine fehlende Spalte deklariert wird, kann die Transformation aufgrund fehlender Abhängigkeiten nicht ausgeführt werden.
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0021¶
Eine MASKING POLICY wurde als Ersatz für MASKED WITH erstellt.
Bemerkung
Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Diese EWI wird hinzugefügt, wenn die Alter Table-Anweisung eine MASKED WITH-Klausel enthält. Der Grund für diese Meldung ist, darauf hinzuweisen, dass eine approximative MASKING POLICY als Ersatz für die MASKED WITH-Funktion erstellt wurde.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Bemerkung
Die MASKING POLICY wird vor der ALTER TABLE-Anweisung erstellt. Es wird erwartet, dass sie ein approximiertes Verhalten aufweist. Einige Anpassungen können in Bezug auf Rollen und Benutzerberechtigungen erforderlich sein.
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0022¶
Der Benutzer muss zuvor die Maskierungsrolle definieren.
Bemerkung
Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Diese EWI wird angezeigt, wenn eine MASKING POLICY erstellt wird und eine Rolle oder Berechtigung mit ihr verknüpft werden muss, damit die Datenmaskierung ordnungsgemäß funktioniert.
Codebeispiel¶
Eingabecode¶
Generierter Code:¶
Bemerkung
As shown on line 6, there is a placeholder where the defined roles can be placed. There is room for one or several values separated by commas. Also, here, the use of single quotes is mandatory for each of the values.
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0023¶
Error function could be different in Snowflake
Beschreibung¶
Diese EWI wird bei der Transformation der folgenden ERRORs-Funktionen aufgrund der entsprechenden Verhaltensänderung hinzugefügt.
ERROR_MESSAGE Die Meldung von SQLERRM könnte in Snowflake anders sein.
ERROR_STATE Die Zieleigenschaft SQLSTATE kann aufgrund von Plattformunterschieden eine andere Zahl zurückgeben.
ERROR_PROCEDURE Die Transformation wurde geändert, um die gespeicherte Prozedur zurückzugeben, in der die Funktion aufgerufen wird.
Eingabecode:¶
Generierter Code¶
Empfehlung¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0024¶
CURRENT_TIMESTAMP in At Time Zone-Anweisung kann in bestimmten Fällen ein anderes Verhalten aufweisen.
Beschreibung¶
Diese FDM wird hinzugefügt, wenn die Anweisung At Time Zone den Parameter CURRENT_TIMESTAMP verwendet. Dies liegt daran, dass das Ergebnis in einigen Fällen abweichen kann.
Der Hauptunterschied besteht darin, dass in SQL ServerCURRENT_TIMESTAMP das aktuelle Systemdatum und die Uhrzeit in der Zeitzone des Servers zurückgibt, während in Snowflake CURRENT_TIMESTAMP das aktuelle Datum und die Uhrzeit in der UTC-(Coordinated Universal Time)-Zeitzone liefert.
Eingabecode:¶
Sql Server¶
Ergebnis¶
2024-02-08 16:52:55.317 -10:00
Generierter Code:¶
Snowflake¶
Ergebnis¶
2024-02-08 06:53:46.994 -1000
Best Practices¶
Dies ist ein Beispiel, wenn Sie das gleiche Format in Snowflake beibehalten möchten.
SQL Server¶
Ergebnis¶
2024-02-08 16:33:49.143 -10:00
In Snowflake können Sie ALTER SESSION verwenden, um die Standardzeitzone zu ändern. Beispiel:
Snowflake¶
Ergebnis¶
2024-02-08 16:33:49.143
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0025¶
DB_ID_UDF kann in bestimmten Fällen ein anderes Verhalten aufweisen.
Beschreibung¶
Diese FDM wird hinzugefügt, um zu verdeutlichen, dass die DB_ID_UDF- versucht, die DB_ID- SqlServer-Funktion so gut wie möglich nachzuahmen. In SqlServer ist der einer Datenbank zugewiesene Bezeichner eindeutig, und wenn die Datenbank gelöscht wird, wird diese ID nie wieder verwendet. In Snowflake hingegen entspricht dieser Bezeichner der Nummer, die der Datenbank bei ihrer Erstellung zugewiesen wird. Er ist ebenfalls eindeutig, jedoch fortlaufend – das bedeutet, wenn eine Datenbank gelöscht wird, kann diese Nummer der nächsten neu erstellten Datenbank zugewiesen werden.
Eingabecode:¶
Sql Server¶
Ergebnis¶
6
Generierter Code:¶
Snowflake¶
Ergebnis¶
6
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0026¶
DELETE-Fall wird in der temporären Tabelle nicht berücksichtigt
Beschreibung¶
Es gibt ein INSERT-Anweisungsmuster, das eine bestimmte Transformation erfordert, die das Erstellen einer temporären Tabelle beinhaltet. Diese FDM benachrichtigt, dass der DELETE-Fall bei der genannten Transformation nicht berücksichtigt wird. Weitere Informationen zu diesem Muster finden Sie unter [INSERT mit Table DML-Faktor mit MERGE alsDML] (../../../../translation-references/transact/transact-dmls.md#insert).
Eingabecode:¶
Sql Server¶
Generierter Code:¶
Snowflake¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0027¶
SET ANSI_NULLS ON-Anweisung kann in Snowflake ein anderes Verhalten aufweisen
Beschreibung¶
Diese FDM gibt an, dass die SET ANSI_NULLS ON-Anweisung sich in Snowflake möglicherweise anders verhält. Weitere Informationen zu dieser Anweisung finden Sie im Artikel ANSI_NULLS.
Eingabecode¶
Generierter Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0028¶
Die Ausgabeparameter müssen die gleiche Reihenfolge wie im ausgeführten Code haben.
Beschreibung¶
Diese FDM gibt an, dass die Ausgabeparameter in der SP_EXECUTESQL-Anweisung die gleiche Reihenfolge haben müssen wie in der auszuführenden SQL-Zeichenfolge. Andernfalls werden die Ausgabewerte nicht korrekt zugewiesen.
Codebeispiel¶
Korrekter Fall¶
Wie zu sehen ist, erscheinen@MaxAgeOUT und @MaxIdOUT in derselben Reihenfolge sowohl in der SQL-Zeichenfolge als auch in den Ausgabeparametern.
Bei der Konvertierung des Codes, weisen SELECT $1, $2 INTO :MAXAGE, :MAXID FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) die Werte korrekt zu.
Transact¶
Snowflake¶
Problemfall¶
Wie zu sehen ist, erscheinen @MaxAgeOUT und @MaxIdOUT in den Ausgabeparametern in einer anderen Reihenfolge als in der SQL-Zeichenfolge.
Bei der Konvertierung des Codes weisen SELECT $1, $2 INTO :MAXID, :MAXAGE FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) die Werte falsch zu. Max(AGE) wird :MAXID zugewiesen und Max(ID) wird :MAXAGE zugewiesen.
Dies muss manuell behoben werden, entweder durch Ändern der Reihenfolge der Ausgabeparameter in der SELECT INTO-Anweisung oder durch Anpassen der Reihenfolge in der SQL-Zeichenfolge.
Transact¶
Snowflake¶
Best Practices¶
Stellen Sie sicher, dass die OUTPUT-Parameter in der gleichen Reihenfolge sind, wie sie in der SQL-Zeichenfolge erscheinen.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0029¶
SET NOCOUNT-Anweisung wird auskommentiert. Dies gilt nicht für Snowflake.
Beschreibung¶
Wenn SnowConvert AI auf eine SET NOCOUNT-Anweisung stößt, fügt es diese FDM hinzu. SnowConvert AI kommentiert anschließend die SET NOCOUNT-Anweisung aus, da sie in der Snowflake-Umgebung nicht relevant ist.
Codebeispiel¶
Eingabecode:¶
Generierter Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0030¶
SET ANSI_PADDING ON-Anweisung wird auskommentiert. Das Gleiche gilt auch für Snowflake.
Beschreibung¶
Snowflake behält in Zeichenfolgenwerten immer nachstehende Leerzeichen bei, wenn diese in -Spalten eingefügt werden. Dieses Verhalten entspricht SET ANSI_PADDING ON im SQL-Server. Daher fügt SnowConvert AI beim Auftreten einer SET ANSI_PADDING ON-Anweisung diese FDM hinzu und kommentiert sie aus.
Codebeispiel¶
Eingabecode:¶
Generierter Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0031¶
SET ANSI_WARNINGS ON statement is commented out because Snowflake generally adheres to ANSI-standard behaviors.
Beschreibung¶
Snowflake verhält sich im Allgemeinen so, als wäre ANSI_WARNINGS standardmäßig ON, insbesondere in Bezug auf die Fehlerbehandlung bei arithmetischem Überlauf, Division durch null und Zeichenkürzung. In der Regel müssen Sie kein explizites Äquivalent zu ANSI_WARNINGS in Snowflake „festlegen“. Daher fügt SnowConvert AI beim Auftreten einer SET ANSI_WARNINGS ON-Anweisung diese FDM hinzu und kommentiert sie aus.
Codebeispiel¶
Eingabecode:¶
Generierter Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0032¶
IDENTITY-Spalteneigenschaft wird in CREATE TABLE AS STATEMENT nicht unterstützt. Sie wird mit Hilfe von ROW_NUMBER() emuliert.
Beschreibung¶
Snowflake bietet keine direkte Möglichkeit, um CREATE TABLE AS mit einer Identitätsspalte auszuführen. SnowConvert fügt hingegen eine ROW_NUMBER-Spalte anstelle von IDENTITY hinzu, um die Enumeration der Identität zu simulieren. Bei dieser Transformation wird keine Identitätsspalte erstellt, was bedeutet, dass Zeilen, die nach der Erstellung eingefügt wurden, nicht automatisch hochgezählt werden.
Codebeispiel¶
Eingabecode:¶
Generierter Code¶
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0033¶
SET QUOTED_IDENTIFIER STATEMENT MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE.
Beschreibung¶
SQL Server Behavior
In SQL Server, SET QUOTED_IDENTIFIER ON is a syntax setting that is separate from collation. The database’s or column’s collation (for example, _CI for Case-Insensitive or _CS for Case-Sensitive) dictates whether quoted identifiers are case-sensitive or not. If a database has a _CI collation, then „MyColumn“ and „mycolumn“ are treated as the same.
Snowflake Behavior
In Snowflake, the behavior is simpler and more strict:
Unquoted Identifiers: Automatically stored and resolved in all uppercase, making them case-insensitive (mytable is the same as MYTABLE).
Quoted Identifiers: By default, identifiers enclosed in double quotes („MyColumn“) are case-sensitive. They are stored exactly as you typed them.
Codebeispiel¶
Eingabecode:¶
Generierter Code¶
How to Achieve Equivalence in Snowflake
To get the same case-insensitive behavior for quoted identifiers as in SQL Server, you can set the QUOTED_IDENTIFIERS_IGNORE_CASE session parameter to TRUE in Snowflake.
Best Practices¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0034¶
Beschreibung¶
This FDM is generated when a DATA_COMPRESSION clause is encountered in a CREATE TABLE or ALTER TABLE statement. In SQL Server, DATA_COMPRESSION is used to specify whether data should be compressed (using ROW or PAGE compression) to reduce storage space and improve I/O performance. Snowflake automatically handles data compression using its proprietary compression algorithms, making the DATA_COMPRESSION clause unnecessary and unsupported. SnowConvert comments out the DATA_COMPRESSION clause during conversion.
Example Code¶
Input (SQL Server):¶
Output (Snowflake):¶
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0035¶
ENABLE/DISABLE trigger is automatically handled by Snowflake.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an ALTER TABLE ... ENABLE TRIGGER or ALTER TABLE ... DISABLE TRIGGER statement. In SQL Server, triggers can be manually enabled or disabled per table. In Snowflake, trigger execution is automatically managed by the platform — there is no need (or ability) to manually enable or disable individual triggers. SnowConvert AI comments out the trigger clause and adds this FDM marker.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
No manual action is typically required. Snowflake manages trigger behavior automatically.
If your workflow relied on temporarily disabling triggers for bulk loads, consider using Snowflake streams and tasks as an alternative pattern.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0036¶
HOST_NAME replaced with CURRENT_IP_ADDRESS, which returns the client IP address instead of the workstation name.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters the HOST_NAME() function. In SQL Server, HOST_NAME() returns the workstation name of the client connection. Snowflake does not have a direct equivalent; CURRENT_IP_ADDRESS() is used as the closest alternative, but it returns the client’s IP address rather than the hostname. This is a functional difference because the returned values have different formats and semantics.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
If your application uses
HOST_NAME()for auditing or logging, verify that the IP address provides sufficient information for your use case.If the workstation name is required, consider passing it as a session parameter via
ALTER SESSION SETor storing it in a context variable.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0037¶
SET statement is not applicable in Snowflake as it has equivalent default behavior.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters a SET statement whose specified value matches Snowflake’s default behavior. For example, SET CONCAT_NULL_YIELDS_NULL ON is the default in Snowflake (NULL concatenation yields NULL), SET NUMERIC_ROUNDABORT OFF matches Snowflake’s default of not raising errors on precision loss, and SET ARITHABORT ON/OFF has no behavioral impact in Snowflake. Since the setting is already the default, the statement is commented out.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
No action is required — the commented-out statement reflects behavior that is already the default in Snowflake.
If the non-default value of the same option is used elsewhere (e.g.,
SET CONCAT_NULL_YIELDS_NULL OFF), that will generate a separate EWI (SSC-EWI-TS0089) because the non-default behavior cannot be replicated.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0038¶
Agent Job migrated to Snowflake Task orchestration.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an sp_add_job call that creates a SQL Server Agent Job containing SSIS package steps. The Agent Job definition is migrated to a Snowflake Task orchestration model. The original sp_add_job call is commented out and replaced with generated orchestration files in the ETL/AGENTJOBS/ output directory. The generated output includes Snowflake Task definitions, orchestrator stored procedures, and schedule mappings.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Review the generated files in the
ETL/AGENTJOBS/output directory. These include Snowflake Task definitions and orchestrator stored procedures that replace the Agent Job.Validate the task scheduling and step ordering match your original Agent Job configuration.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0039¶
Agent Job schedule mapped to CRON expression in Snowflake Task.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an sp_add_jobschedule or sp_add_schedule/sp_attach_schedule call that defines a schedule for a SQL Server Agent Job. The schedule parameters (freq_type, freq_interval, active_start_time) are mapped to a CRON expression for use in the corresponding Snowflake Task definition. The original schedule call is commented out.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Verify the generated CRON expression in the Snowflake Task definition matches your intended schedule. Complex SQL Server schedules (e.g., monthly on specific days, bi-weekly) may need manual adjustment.
Review the
ETL/AGENTJOBS/output for the generatedCREATE TASK ... SCHEDULE = 'USING CRON ...'statement.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0040¶
Agent Job step migrated to orchestrator Stored Procedure.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an sp_add_jobstep call for an Agent Job step with a TSQL or SSIS subsystem. The step is migrated to an orchestrator stored procedure that is generated in the ETL/AGENTJOBS/ output directory. The original sp_add_jobstep call is commented out. For SSIS steps, the SSIS package is also processed through SnowConvert AI’s ETL-to-dbt pipeline.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Review the generated orchestrator stored procedure in
ETL/AGENTJOBS/to ensure the step logic is correctly translated.For SSIS steps, also review the generated dbt models and SQL files produced by the ETL-to-dbt pipeline.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0041¶
sp_delete_job translated to DROP TASK IF EXISTS.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an sp_delete_job call for a SQL Server Agent Job that has been migrated to a Snowflake Task. The sp_delete_job call is translated to a DROP TASK IF EXISTS statement targeting the corresponding Snowflake Task. The task name is derived from the original job name with a TASK_ prefix and uppercase formatting.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Verify that the task name
TASK_{JOB_NAME}matches the task created by the Agent Job migration (SSC-FDM-TS0038).Note that dropping a task in Snowflake also removes its schedule. If the task has dependent tasks, those must be updated separately.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0042¶
sp_start_job translated to EXECUTE TASK.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an sp_start_job call for a SQL Server Agent Job that has been migrated to a Snowflake Task. The call is translated to an EXECUTE TASK statement that triggers the corresponding Snowflake Task immediately, regardless of its schedule.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
EXECUTE TASKtriggers a single immediate run of the task. It does not affect the task’s schedule or resume/suspend state.Ensure the task has been created and is in a
STARTEDstate if you also need it to run on schedule.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0043¶
sp_stop_job translated to ALTER TASK SUSPEND.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an sp_stop_job call for a SQL Server Agent Job that has been migrated to a Snowflake Task. The call is translated to ALTER TASK ... SUSPEND, which prevents future scheduled runs of the task. Note that ALTER TASK SUSPEND does not stop an already-running execution — it only prevents future runs from being triggered.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Be aware that
ALTER TASK SUSPENDonly prevents future scheduled executions. If the task is currently running, the in-progress execution will complete.In SQL Server,
sp_stop_jobattempts to cancel an in-progress job step. This capability does not exist in Snowflake’s Task model.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0044¶
sp_update_job @enabled translated to ALTER TASK RESUME or SUSPEND.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters an sp_update_job call with the @enabled parameter for a SQL Server Agent Job that has been migrated to a Snowflake Task. When @enabled=1, the call is translated to ALTER TASK ... RESUME (starts the task’s schedule). When @enabled=0, it is translated to ALTER TASK ... SUSPEND (pauses the task’s schedule).
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Verify that
RESUMEandSUSPENDmap correctly to your intended enable/disable behavior.If
sp_update_jobis called with parameters other than@enabled(e.g.,@description), those calls will generate SSC-EWI-TS0093 instead, as metadata updates are not applicable in Snowflake’s Task model.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0046¶
Rowversion/timestamp data type auto-generates unique values in SQL Server but not in Snowflake.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters a column with the ROWVERSION or TIMESTAMP data type (they are synonyms in SQL Server). In SQL Server, these data types automatically generate unique binary values on every INSERT and UPDATE, providing a mechanism for optimistic concurrency control. SnowConvert AI maps the type to BINARY(8), which preserves the storage format but does not replicate the auto-generation behavior.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
If your application uses
ROWVERSIONfor optimistic concurrency control, implement an alternative pattern in Snowflake. Options include:A
NUMBERcolumn with a Snowflake sequence, updated via a stream/task or stored procedure on each modification.A
TIMESTAMP_NTZcolumn set toCURRENT_TIMESTAMP()on insert/update using a default value and a stream-triggered task.
If the column is only used for auditing (not concurrency), a
TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()column may suffice.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0047¶
SET IDENTITY_INSERT commented out.
Beschreibung¶
This FDM is generated when SnowConvert AI encounters a SET IDENTITY_INSERT ... ON or SET IDENTITY_INSERT ... OFF statement. In SQL Server, SET IDENTITY_INSERT ON allows explicit values to be inserted into an identity column, and OFF re-enables the automatic identity generation. In Snowflake, explicit inserts into IDENTITY/AUTOINCREMENT columns are allowed by default without any special setting. However, the sequence counter does not automatically adjust to account for explicitly inserted values, which may cause conflicts.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
After explicitly inserting values into an identity column in Snowflake, manually adjust the underlying sequence to avoid conflicts:
ALTER SEQUENCE seq_name SET START = <max_inserted_value + increment>.If you rely on toggling
IDENTITY_INSERTin batch load scripts, remove theSETstatements and add a sequence adjustment step at the end of the batch.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0047¶
SET IDENTITY_INSERT commented out.
Beschreibung¶
In SQL Server, SET IDENTITY_INSERT controls whether explicit values can be inserted into the identity column of a table. When set to ON, it allows explicit inserts; when set to OFF (the default), it prevents them.
In Snowflake, there is no equivalent statement because explicit inserts into IDENTITY / AUTOINCREMENT columns are always allowed by default. However, unlike SQL Server, the underlying sequence counter in Snowflake does not adjust to account for explicitly inserted values, which may lead to duplicate key conflicts on subsequent inserts.
SnowConvert AI comments out the SET IDENTITY_INSERT statement and attaches this FDM with a context-specific reason depending on whether the original statement was ON or OFF.
Codebeispiel¶
SET IDENTITY_INSERT ON¶
Eingabecode:¶
Generierter Code:¶
SET IDENTITY_INSERT OFF¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
After migration, verify that any tables with
IDENTITY/AUTOINCREMENTcolumns do not experience duplicate key conflicts caused by the sequence counter not reflecting explicitly inserted values.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0046¶
Rowversion/timestamp data type auto-generation behavior not replicated in Snowflake.
Beschreibung¶
In SQL Server, the rowversion data type (also known as timestamp) automatically generates a unique BINARY(8) value every time a row is inserted or updated. This is commonly used for optimistic concurrency control.
Snowflake does not have an equivalent mechanism. The rowversion/timestamp data type is mapped to BINARY(8), but Snowflake’s BINARY(8) column will not auto-generate unique values on INSERT or UPDATE. Any application logic that depends on auto-incrementing row version values will need to be revised.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Review any application logic that depends on
rowversion/timestampfor optimistic concurrency control and adjust accordingly.Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0053¶
WITH CHECK clause removed. Snowflake constraints are informational only and not enforced.
Beschreibung¶
This message is shown when an ALTER TABLE ... WITH CHECK ADD CONSTRAINT ... FOREIGN KEY ... statement is converted. SnowConvert AI removes the WITH CHECK clause because Snowflake constraints are informational and are not enforced, so the validation semantics do not apply.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Review whether the source workflow depended on SQL Server validating existing data when the constraint was added.
If validation is required after migration, implement an explicit data-quality check in Snowflake.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
SSC-FDM-TS0054¶
CHECK/NOCHECK CONSTRAINT statement removed. Enabling or disabling constraints is not applicable in Snowflake.
Beschreibung¶
This message is shown when ALTER TABLE ... CHECK CONSTRAINT ... or ALTER TABLE ... NOCHECK CONSTRAINT ... is converted. SnowConvert AI comments out the statement because Snowflake does not support enabling or disabling constraints in the same way SQL Server does.
Codebeispiel¶
Eingabecode:¶
Generierter Code:¶
Best Practices¶
Review any operational process that temporarily disables constraints during bulk loads or maintenance.
If the source process relied on constraint state transitions, redesign that workflow explicitly for Snowflake.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.