SnowConvert: Transact-Anweisungen

ALTER TABLE

Beschreibung

Ändert eine Tabellendefinition durch Ändern, Hinzufügen oder Löschen von Spalten und Beschränkungen. ALTER TABLE ordnet auch Partitionen neu zu und baut sie neu auf oder deaktiviert und aktiviert Beschränkungen und Trigger. (https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql)

CHECK CONSTRAINT

Applies to
  • [x] SQL Server

  • [x] Azure Synapse Analytics

Beschreibung

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Wenn die Einschränkung, die im SQL Server-Code hinzugefügt wurde, in Snowflake überhaupt nicht unterstützt wird, kommentiert Snowconvert die CHECK CONSTRAINT-Anweisung aus, da sie nicht mehr gültig ist.

Beispielhafte Quellcode-Muster

SQL Server

 ALTER TABLE
    [Person].[EmailAddress] CHECK CONSTRAINT [FK_EmailAddress_Person_BusinessEntityID]
GO
Copy
Snowflake
 !!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
ALTER TABLE IF EXISTS Person.EmailAddress CHECK CONSTRAINT FK_EmailAddress_Person_BusinessEntityID;
Copy

Bekannte Probleme

1. Die ungültige CHECK CONSTRAINT -Anweisung wird auskommentiert und hinterlässt eine ungültige ALTER TABLE-Anweisung.

ADD

Beschreibung

Bemerkung

In SQL Server erlaubt die ADD-Klausel mehrere Aktionen pro ADD, während Snowflake nur eine Folge von ADD-Spaltenaktionen zulässt. Folglich unterteilt SnowConvert die ALTER TABLE ADD-Klausel in einzelne ALTER TABLE Anweisungen.

Es gibt eine Untergruppe von Funktionen, die durch das Schlüsselwort ADD bereitgestellt werden und das Hinzufügen von verschiedenen Elementen zur Zieltabelle ermöglichen. Dazu zählen:

  • Definition einer Spalte

  • Definition der berechneten Spalte

  • Tabelleneinschränkung

  • Definition der Spaltenmenge

TABLE CONSTRAINT

Applies to
  • [x] SQL Server

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Gibt die Eigenschaften einer PRIMARY KEY, FOREIGN KEY, UNIQUE- oder CHECK-Einschränkung an, die Teil einer neuen Spaltendefinition ist, die einer Tabelle mit Hilfe von ALTER TABLE hinzugefügt wird.(https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-column-constraint-transact-sql)

Die Übersetzung für Spalteneinschränkungen ist relativ einfach. Es gibt einige Teile der Syntax, die in Snowflake nicht erforderlich sind oder nicht unterstützt werden.

Diese Teile umfassen:

  • CLUSTERED | NONCLUSTERED

  • WITH FILLFACTOR = fillfactor

  • WITH (index_option \[, …n ])

  • ON{ partition_scheme_name ( partition_column_name )\ \ | filegroup | „default“ }

  • NOT FOR REPLICATION

  • CHECK [ NOT FOR REPLICATION ]

Syntax in SQL Server

 [ CONSTRAINT constraint_name ]   
{   
    { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        (column [ ASC | DESC ] [ ,...n ] )  
        [ WITH FILLFACTOR = fillfactor   
        [ WITH ( <index_option>[ , ...n ] ) ]  
        [ ON { partition_scheme_name ( partition_column_name ... )  
          | filegroup | "default" } ]   
    | FOREIGN KEY   
        ( column [ ,...n ] )  
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   
    | CONNECTION
        ( { node_table TO node_table } 
          [ , {node_table TO node_table }]
          [ , ...n ]
        )
        [ ON DELETE { NO ACTION | CASCADE } ]
    | DEFAULT constant_expression FOR column [ WITH VALUES ]   
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )  
}
Copy

Syntax in Snowflake

 inlineUniquePK ::=
  [ CONSTRAINT <constraint_name> ]
  { UNIQUE | PRIMARY KEY }
  [ [ NOT ] ENFORCED ]
  [ [ NOT ] DEFERRABLE ]
  [ INITIALLY { DEFERRED | IMMEDIATE } ]
  [ ENABLE | DISABLE ]
  [ VALIDATE | NOVALIDATE ]
  [ RELY | NORELY ]
Copy
 [ CONSTRAINT <constraint_name> ]
  { UNIQUE | PRIMARY KEY }
  [ [ NOT ] ENFORCED ]
  [ [ NOT ] DEFERRABLE ]
  [ INITIALLY { DEFERRED | IMMEDIATE } ]
  [ ENABLE | DISABLE ]
  [ VALIDATE | NOVALIDATE ]
  [ RELY | NORELY ]
Copy

Beispielhafte Quellcode-Muster

Mehrere ALTER TABLE-Instanzen

SQL Server
 -- PRIMARY KEY
ALTER TABLE
    [Person]
ADD
    CONSTRAINT [PK_EmailAddress_BusinessEntityID_EmailAddressID] PRIMARY KEY CLUSTERED (
        [BusinessEntityID] ASC,
        [EmailAddressID] ASC
    ) ON [PRIMARY]
GO

-- FOREING KEY TO ANOTHER TABLE
ALTER TABLE
    [Person].[EmailAddress] WITH CHECK
ADD
    CONSTRAINT [FK_EmailAddress_Person_BusinessEntityID] FOREIGN KEY([BusinessEntityID]) REFERENCES [Person].[Person] ([BusinessEntityID]) ON DELETE CASCADE
GO
Copy
Snowflake
 -- PRIMARY KEY
ALTER TABLE Person
ADD
    CONSTRAINT PK_EmailAddress_BusinessEntityID_EmailAddressID PRIMARY KEY (BusinessEntityID, EmailAddressID);

-- FOREING KEY TO ANOTHER TABLE
ALTER TABLE Person.EmailAddress
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
WITH CHECK
ADD
    CONSTRAINT FK_EmailAddress_Person_BusinessEntityID FOREIGN KEY(BusinessEntityID) REFERENCES Person.Person (BusinessEntityID) ON DELETE CASCADE ;
Copy

DEFAULT in Einschränkungen

SQL Server
 CREATE TABLE Table1
(
   COL_VARCHAR VARCHAR,
   COL_INT INT,
   COL_DATE DATE
);

ALTER TABLE
    Table1
ADD
    CONSTRAINT [DF_Table1_COL_INT] DEFAULT ((0)) FOR [COL_INT]
GO

ALTER TABLE
    Table1
ADD
    COL_NEWCOLUMN VARCHAR,
    CONSTRAINT [DF_Table1_COL_VARCHAR] DEFAULT ('NOT DEFINED') FOR [COL_VARCHAR]
GO

ALTER TABLE
    Table1
ADD
    CONSTRAINT [DF_Table1_COL_DATE] DEFAULT (getdate()) FOR [COL_DATE]    
GO
Copy
Snowflake
 CREATE OR REPLACE TABLE Table1 (
   COL_VARCHAR VARCHAR DEFAULT ('NOT DEFINED'),
   COL_INT INT DEFAULT ((0)),
   COL_DATE DATE DEFAULT (CURRENT_TIMESTAMP() :: TIMESTAMP)
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"transact"}}'
;

----** SSC-FDM-TS0020 - DEFAULT CONSTRAINT MAY HAVE BEEN ADDED TO TABLE DEFINITION **

--ALTER TABLE Table1
--ADD
--    CONSTRAINT DF_Table1_COL_INT DEFAULT ((0)) FOR COL_INT
                                                          ;

ALTER TABLE Table1
ADD COL_NEWCOLUMN VARCHAR;

----** SSC-FDM-TS0020 - DEFAULT CONSTRAINT MAY HAVE BEEN ADDED TO TABLE DEFINITION **

--ALTER TABLE Table1
--ADD
--CONSTRAINT DF_Table1_COL_VARCHAR DEFAULT ('NOT DEFINED') FOR COL_VARCHAR
                                                                        ;

----** SSC-FDM-TS0020 - DEFAULT CONSTRAINT MAY HAVE BEEN ADDED TO TABLE DEFINITION **

--ALTER TABLE Table1
--ADD
--    CONSTRAINT DF_Table1_COL_DATE DEFAULT (CURRENT_TIMESTAMP() :: TIMESTAMP) FOR COL_DATE
                                                                                         ;
Copy

Bekannte Probleme

1. DEFAULT wird nur innerhalb von CREATE TABLE und ALTER TABLE unterstützt... ADD COLUMN

SQL Server unterstützt die Definition einer DEFAULT-Eigenschaft innerhalb einer Einschränkung, während Snowflake dies nur erlaubt, wenn die Spalte über CREATE TABLE oder ALTER TABLE... ADD COLUMN hinzugefügt wird. DEFAULT-Eigenschaften innerhalb der ADD CONSTRAINT-Syntax werden nicht unterstützt und werden in ALTER TABLE ALTER COLUMN übersetzt.

Zugehörige EWIs

  1. [SSC-EWI-0035](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0035): Check-Anweisung wird nicht unterstützt.

  2. [SSC-EWI-0040](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0040): Anweisung wird nicht unterstützt.

  3. [SSC-FDM-TS0020](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0020): Die Standardeinschränkung wurde auskommentiert und möglicherweise zu einer Tabellendefinition hinzugefügt.

CHECK

Applies to
  • [x] SQL Server

Beschreibung

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Wenn die CHECK-Klausel in der ALTER-Anweisung enthalten ist, kommentiert Snowconvert die gesamte Anweisung aus, da sie nicht unterstützt wird.

Beispielhafte Quellcode-Muster

SQL Server

 ALTER TABLE dbo.doc_exd    
ADD CONSTRAINT exd_check CHECK NOT FOR REPLICATION (column_a > 1); 
Copy
Snowflake
 !!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
ALTER TABLE dbo.doc_exd
ADD CONSTRAINT exd_check CHECK NOT FOR REPLICATION (column_a > 1);
Copy

Bekannte Probleme

1. ALTER TABLE CHECK-Klausel wird in Snowflake nicht unterstützt.

Die gesamte ALTER TABLE CHECK-Klausel ist auskommentiert, da sie in Snowflake nicht unterstützt wird.

Zugehörige EWIs

  • [SSC-EWI-0035](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0035): Check-Anweisung wird nicht unterstützt.

CONNECTION

Applies to
  • [x] SQL Server

Beschreibung

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Wenn die CONNECTION-Klausel in der ALTER-Anweisung enthalten ist, kommentiert Snowconvert die gesamte Anweisung aus, da sie nicht unterstützt wird.

Beispielhafte Quellcode-Muster

SQL Server

 ALTER TABLE bought 
ADD COL2 VARCHAR(32), CONSTRAINT EC_BOUGHT1 CONNECTION (Customer TO Product, Supplier TO Product) 
ON DELETE NO ACTION;
Copy
Snowflake
 ALTER TABLE bought
ADD COL2 VARCHAR(32);

!!!RESOLVE EWI!!! /*** SSC-EWI-0109 - ALTER TABLE SYNTAX NOT APPLICABLE IN SNOWFLAKE ***/!!!
ALTER TABLE bought
ADD
CONSTRAINT EC_BOUGHT1 CONNECTION (Customer TO Product, Supplier TO Product)
ON DELETE NO ACTION;
Copy

Bekannte Probleme

1. ALTER TABLE CONNECTION-Klausel wird in Snowflake nicht unterstützt.

Die gesamte ALTER TABLE CONNECTION-Klausel ist auskommentiert, da sie in Snowflake nicht unterstützt wird.

Zugehörige EWIs

  • [SSC-EWI-0109](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0109): Die Syntax von Alter Table ist in Snowflake nicht anwendbar.

DEFAULT

Applies to
  • [x] SQL Server

Beschreibung

Wenn die DEFAULT-Klausel in der ALTER-Anweisung enthalten ist, kommentiert Snowconvert die gesamte Anweisung aus, da sie nicht unterstützt wird.

Das einzige funktionierende Szenario ist, wenn sich die Tabellendefinition in derselben Datei befindet. In diesem Fall wird die Vorgabe in der Spaltendefinition hinzugefügt.

Beispielhafte Quellcode-Muster

SQL Server

 CREATE TABLE table1
(
  col1 integer not null,
  col2 varchar collate Latin1_General_CS,
  col3 date not null
)

ALTER TABLE table1
ADD CONSTRAINT col1_constraint DEFAULT 50 FOR col1;

ALTER TABLE table1
ADD CONSTRAINT col2_constraint DEFAULT 'hello world' FOR col2;

ALTER TABLE table1
ADD CONSTRAINT col3_constraint DEFAULT getdate() FOR col3;
Copy
Snowflake
 CREATE OR REPLACE TABLE table1 (
  col1 INTEGER not null DEFAULT 50,
  col2 VARCHAR COLLATE 'EN-CS' DEFAULT 'hello world',
  col3 DATE not null DEFAULT CURRENT_TIMESTAMP() :: TIMESTAMP
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"transact"}}'
;

----** SSC-FDM-TS0020 - DEFAULT CONSTRAINT MAY HAVE BEEN ADDED TO TABLE DEFINITION **

--ALTER TABLE table1
--ADD CONSTRAINT col1_constraint DEFAULT 50 FOR col1
                                                  ;

----** SSC-FDM-TS0020 - DEFAULT CONSTRAINT MAY HAVE BEEN ADDED TO TABLE DEFINITION **

--ALTER TABLE table1
--ADD CONSTRAINT col2_constraint DEFAULT 'hello world' FOR col2
                                                             ;

----** SSC-FDM-TS0020 - DEFAULT CONSTRAINT MAY HAVE BEEN ADDED TO TABLE DEFINITION **

--ALTER TABLE table1
--ADD CONSTRAINT col3_constraint DEFAULT CURRENT_TIMESTAMP() :: TIMESTAMP FOR col3
                                                                                ;
Copy

Bekannte Probleme

1. ALTER TABLE DEFAULT-Klausel wird in Snowflake nicht unterstützt.

Die gesamte ALTER TABLE DEFAULT-Klausel ist auskommentiert, da sie in Snowflake nicht unterstützt wird.

Zugehörige EWIs

  1. [SSC-FDM-TS0020](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0020): Die Standardeinschränkung wurde auskommentiert und möglicherweise zu einer Tabellendefinition hinzugefügt.

FOREIGN KEY

Applies to
  • [x] SQL Server

Beschreibung

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Snowflake unterstützt die Grammatik für referentielle Integritätseinschränkungen und deren Eigenschaften, um die Migration von anderen Datenbanken zu erleichtern.

Syntax in SQL Server

 FOREIGN KEY   
        ( column [ ,...n ] )  
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]
Copy
Syntax in Snowflake
   [ FOREIGN KEY ]
  REFERENCES <ref_table_name> [ ( <ref_col_name> ) ]
  [ MATCH { FULL | SIMPLE | PARTIAL } ]
  [ ON [ UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ]
       [ DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] ]
  [ [ NOT ] ENFORCED ]
  [ [ NOT ] DEFERRABLE ]
  [ INITIALLY { DEFERRED | IMMEDIATE } ]
  [ ENABLE | DISABLE ]
  [ VALIDATE | NOVALIDATE ]
  [ RELY | NORELY ]
Copy

Beispielhafte Quellcode-Muster

SQL Server

 ALTER TABLE [Tests].[dbo].[Employee]
ADD CONSTRAINT FK_Department FOREIGN KEY(DepartmentID) REFERENCES Department(DepartmentID) 
ON UPDATE CASCADE
ON DELETE NO ACTION
NOT FOR REPLICATION;
Copy
Snowflake
 ALTER TABLE Tests.dbo.Employee
ADD CONSTRAINT FK_Department FOREIGN KEY(DepartmentID) REFERENCES Department (DepartmentID)
ON UPDATE CASCADE
ON DELETE NO ACTION;
Copy

Bemerkung

Beschränkungen werden in Snowflake nicht erzwungen, mit Ausnahme von NOT NULL.

Primär- und Fremdschlüssel werden nur zu Dokumentationszwecken und nicht für Design-Einschränkungen verwendet.

Bekannte Probleme

Es wurden keine Probleme gefunden

Zugehörige EWIs

Keine zugehörigen EWIs.

ON PARTITION

Applies to
  • [x] SQL Server

Bemerkung

Nicht relevante Anweisung.

Warnung

Beachten Sie, dass diese Anweisung aus der Migration entfernt wurde, da sie eine nicht relevante Syntax darstellt. Das bedeutet, dass sie in Snowflake nicht erforderlich ist.

Beschreibung

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

In Transact SQL Server wird die Anweisung on partition innerhalb der alter-Anweisungen verwendet und dient dazu, die Daten in der Datenbank aufzuteilen. Weitere Informationen finden Sie hier.

Beispielhafte Quellcode-Muster

On Partition

Beachten Sie, dass in diesem Beispiel die ON PARTITION entfernt wurde. Das liegt daran, dass Snowflake eine integrierte Partitionierungsmethodik bietet. Die Syntax ist also nicht relevant.

 ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE
ON partition_scheme_name (partition_column_name);
Copy
 ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE;
Copy

Bekannte Probleme

Es wurden keine Probleme gefunden.

Zugehörige EWIs

Keine zugehörigen EWIs.

PRIMARY KEY

Applies to
  • [x] SQL Server

Beschreibung

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

SQL Der Server-Primärschlüssel hat viele Klauseln, die für Snowflake nicht gelten. Der größte Teil der Anweisung wird also auskommentiert.

Syntax in SQL Server

 { PRIMARY KEY | UNIQUE }   
[ CLUSTERED | NONCLUSTERED ]   
(column [ ASC | DESC ] [ ,...n ] )  
[ WITH FILLFACTOR = fillfactor   
[ WITH ( <index_option>[ , ...n ] ) ]  
[ ON { partition_scheme_name ( partition_column_name ... )  
  | filegroup | "default" } ]   
Copy

Syntax in Snowflake

 [ CONSTRAINT <constraint_name> ]
{ UNIQUE | PRIMARY KEY } ( <col_name> [ , <col_name> , ... ] )
[ [ NOT ] ENFORCED ]
[ [ NOT ] DEFERRABLE ]
[ INITIALLY { DEFERRED | IMMEDIATE } ]
[ ENABLE | DISABLE ]
[ VALIDATE | NOVALIDATE ]
[ RELY | NORELY ]
Copy

Beispielhafte Quellcode-Muster

Warnung

Beachten Sie, dass die WITH FILLFACTOR-Anweisung aus der Übersetzung entfernt wurde, da sie in der Snowflake-Syntax nicht relevant ist.

SQL Server

 ALTER TABLE Production.TransactionHistoryArchive
   ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY 
   CLUSTERED (TransactionID)
   WITH (FILLFACTOR = 75, ONLINE = ON, PAD_INDEX = ON)
   ON "DEFAULTLOCATION";
Copy

Snowflake

 ALTER TABLE Production.TransactionHistoryArchive
   ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY (TransactionID);
Copy

Bekannte Probleme

Es wurden keine Probleme gefunden

Zugehörige EWIs

Keine zugehörigen EWIs.

COLUMN DEFINITION

Applies to
  • [x] SQL Server

  • [x] Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Gibt die Eigenschaften einer Spalte an, die einer Tabelle mit Hilfe von ALTER TABLE hinzugefügt werden.

Beim Hinzufügen einer Spaltendefinition in Snowflake gibt es einige Unterschiede zu SQL Server.

So sind beispielsweise mehrere Teile der SQL Server-Grammatik nicht erforderlich oder werden von Snowflake überhaupt nicht unterstützt. Dazu zählen:

Darüber hinaus werden einige andere Teile nur teilweise unterstützt und erfordern zusätzliche Arbeit, um die Originalfunktionalität korrekt zu emulieren. Konkret geht es um die MASKED WITH- Eigenschaft, die im Abschnitt Muster dieser Seite behandelt wird.

Syntax in SQL Server

 column_name <data_type>  
[ FILESTREAM ]  
[ COLLATE collation_name ]   
[ NULL | NOT NULL ]  
[
    [ CONSTRAINT constraint_name ] DEFAULT constant_expression [ WITH VALUES ]   
    | IDENTITY [ ( seed , increment ) ] [ NOT FOR REPLICATION ]   
]
[ ROWGUIDCOL ]   
[ SPARSE ]   
[ ENCRYPTED WITH  
  ( COLUMN_ENCRYPTION_KEY = key_name ,  
      ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED } ,   
      ALGORITHM =  'AEAD_AES_256_CBC_HMAC_SHA_256'   
  ) ]  
[ MASKED WITH ( FUNCTION = ' mask_function ') ]  
[ <column_constraint> [ ...n ] ]  
Copy

Snowflake

 ADD [ COLUMN ] <col_name> <col_type>
        [ { DEFAULT <expr> | { AUTOINCREMENT | IDENTITY } [ { ( <start_num> , <step_num> ) | START <num> INCREMENT <num> } ] } ]
                            /* AUTOINCREMENT (or IDENTITY) supported only for columns with numeric data types (NUMBER, INT, FLOAT, etc.). */
                            /* Also, if the table is not empty (i.e. rows exist in the table), only DEFAULT can be altered.               */
        [ inlineConstraint ]
        [ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col1_name> , cond_col_1 , ... ) ] ]
Copy

Beispielhafte Quellcode-Muster

Grundlegendes Muster

Dieses Muster zeigt die Entfernung von Elementen aus dem Original ALTER TABLE.

SQL Server
 ALTER TABLE table_name
ADD column_name INTEGER;
Copy
Snowflake
 ALTER TABLE IF EXISTS table_name
ADD column_name INTEGER;
Copy

COLLATE

Mit einer Sortierung können Sie umfassendere Regeln für den Vergleich von Zeichenfolgen festlegen.

SQL Server
 ALTER TABLE table_name
ADD COLUMN new_column_name VARCHAR
COLLATE Latin1_General_CI_AS;
Copy

Da die Nomenklatur der Sortierregeln von SQL Server zu Snowflake unterschiedlich ist, müssen Sie Anpassungen vornehmen.

Snowflake
 ALTER TABLE IF EXISTS table_name
ADD COLUMN new_column_name VARCHAR COLLATE 'EN-CI-AS' /*** SSC-PRF-0002 - CASE INSENSITIVE COLUMNS CAN DECREASE THE PERFORMANCE OF QUERIES ***/;
Copy

MASKED WITH

Dieses Muster zeigt die Übersetzung für MASKED WITH-Eigenschaft. CREATE OR REPLACE MASKING POLICY wird irgendwo vor der ersten Verwendung eingefügt und dann durch eine SET MASKING POLICY-Klausel referenziert. Der Name der neuen MASKING POLICY ist die Verkettung des Namens und der Argumente der ursprünglichen MASKED WITH FUNCTION, wie unten zu sehen ist:

SQL Server
 ALTER TABLE table_name
ALTER COLUMN column_name
ADD MASKED WITH ( FUNCTION = ' random(1, 999) ' );
Copy
Snowflake
 --** SSC-FDM-TS0022 - MASKING ROLE MUST BE DEFINED PREVIOUSLY BY THE USER **
CREATE OR REPLACE MASKING POLICY "random_1_999" AS
(val SMALLINT)
RETURNS SMALLINT ->
CASE
WHEN current_role() IN ('YOUR_DEFINED_ROLE_HERE')
THEN val
ELSE UNIFORM(1, 999, RANDOM()) :: SMALLINT
END;

ALTER TABLE IF EXISTS table_name MODIFY COLUMN column_name/*** SSC-FDM-TS0021 - A MASKING POLICY WAS CREATED AS SUBSTITUTE FOR MASKED WITH ***/  SET MASKING POLICY "random_1_999";
Copy

DEFAULT

Dieses Muster veranschaulicht einige der grundlegenden Übersetzungsszenarien für eine DEFAULT-Eigenschaft.

SQL Server
 ALTER TABLE table_name
ADD intcol INTEGER DEFAULT 0;

ALTER TABLE table_name
ADD varcharcol VARCHAR(20) DEFAULT '';

ALTER TABLE table_name
ADD datecol DATE DEFAULT CURRENT_TIMESTAMP;
Copy
Snowflake
 ALTER TABLE IF EXISTS table_name
ADD intcol INTEGER DEFAULT 0;

ALTER TABLE IF EXISTS table_name
ADD varcharcol VARCHAR(20) DEFAULT '';

ALTER TABLE IF EXISTS table_name
ADD datecol DATE
                 !!!RESOLVE EWI!!! /*** SSC-EWI-TS0078 - DEFAULT OPTION NOT ALLOWED IN SNOWFLAKE ***/!!!
                 DEFAULT CURRENT_TIMESTAMP;
Copy

ENCRYPTED WITH

Dieses Muster veranschaulicht die Übersetzung für die Eigenschaft ENCRYPTED WITH, die im Ausgabecode auskommentiert ist.

SQL Server
 ALTER TABLE table_name
ADD encryptedcol VARCHAR(20)
ENCRYPTED WITH  
  ( COLUMN_ENCRYPTION_KEY = key_name ,  
      ENCRYPTION_TYPE = RANDOMIZED ,  
      ALGORITHM =  'AEAD_AES_256_CBC_HMAC_SHA_256'  
  );
Copy
Snowflake
 ALTER TABLE IF EXISTS table_name
ADD encryptedcol VARCHAR(20)
----** SSC-FDM-TS0009 - ENCRYPTED WITH NOT SUPPORTED IN SNOWFLAKE **
--ENCRYPTED WITH
--  ( COLUMN_ENCRYPTION_KEY = key_name ,
--      ENCRYPTION_TYPE = RANDOMIZED ,
--      ALGORITHM =  'AEAD_AES_256_CBC_HMAC_SHA_256'
--  )
   ;
Copy

NOT NULL

Die SQL Server NOT NULL-Klausel hat das gleiche Muster und die gleiche Funktionalität wie die Snowflake NOT NULL-Klausel

SQL Server
 ALTER TABLE table2 ADD 
column_test INTEGER NOT NULL,
column_test2 INTEGER NULL,
column_test3 INTEGER;
Copy
Snowflake
 ALTER TABLE IF EXISTS table2 ADD column_test INTEGER NOT NULL;

ALTER TABLE IF EXISTS table2 ADD column_test2 INTEGER NULL;

ALTER TABLE IF EXISTS table2 ADD column_test3 INTEGER;
Copy

IDENTITY

Dieses Muster zeigt die Übersetzung für IDENTITY. Der Teil NOT FOR REPLICATION wird in Snowflake entfernt.

SQL Server
 ALTER TABLE table3 ADD 
column_test INTEGER IDENTITY(1, 100) NOT FOR REPLICATION;
Copy
Snowflake
 CREATE OR REPLACE SEQUENCE table3_column_test
START WITH 1
INCREMENT BY 100
COMMENT = 'FOR TABLE-COLUMN table3.column_test';

ALTER TABLE table3
ADD COLUMN column_test INTEGER DEFAULT table3_column_test.NEXTVAL ;
Copy

Nicht unterstützte Klauseln

FILESTREAM

Die ursprüngliche Verhaltensweise von FILESTREAM ist in Snowflake nicht reproduzierbar und verdient es, die gesamte Anweisung ALTER TABLE auszukommentieren.

SQL Server
 ALTER TABLE table2
ADD column1 varbinary(max)
FILESTREAM;
Copy
Snowflake
 ALTER TABLE IF EXISTS table2
ADD column1 VARBINARY
!!!RESOLVE EWI!!! /*** SSC-EWI-0040 - THE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FILESTREAM;
Copy

SPARSE

In SQL Server wird SPARSE verwendet, um Spalten zu definieren, die für die Speicherung auf NULL optimiert sind. Wenn wir jedoch Snowflake verwenden, müssen wir diese Klausel nicht verwenden.

Snowflake führt Optimierungen über Tabellen automatisch durch, wodurch die Notwendigkeit manueller Optimierungen durch den Benutzer verringert wird.

SQL Server
 -- ADD COLUMN DEFINITION form
ALTER TABLE table3
ADD column1 int NULL SPARSE;

----------------------------------------
/* It also applies to the other forms */
----------------------------------------

-- CREATE TABLE form
CREATE TABLE table3
(
    column1 INT SPARSE NULL
);

-- ALTER COLUMN form
ALTER TABLE table3
ALTER COLUMN column1 INT NULL SPARSE;
Copy
Snowflake
 -- ADD COLUMN DEFINITION form
ALTER TABLE IF EXISTS table3
ADD column1 INT NULL
                     !!!RESOLVE EWI!!! /*** SSC-EWI-0040 - THE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE ***/!!! SPARSE;

----------------------------------------
/* It also applies to the other forms */
----------------------------------------

-- CREATE TABLE form
CREATE OR REPLACE TABLE table3
(
    column1 INT
                !!!RESOLVE EWI!!! /*** SSC-EWI-0040 - THE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
                SPARSE NULL
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"transact"}}'
;

-- ALTER COLUMN form
ALTER TABLE IF EXISTS table3
ALTER COLUMN column1
                     !!!RESOLVE EWI!!! /*** SSC-EWI-TS0061 - ALTER COLUMN COMMENTED OUT BECAUSE SPARSE COLUMN IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
                     INT NULL SPARSE;
Copy

ROWGUIDCOL

SQL Server
 ALTER TABLE table_name
ADD column_name UNIQUEIDENTIFIER 
ROWGUIDCOL;
Copy
Snowflake
 ALTER TABLE IF EXISTS table_name
ADD column_name VARCHAR
!!!RESOLVE EWI!!! /*** SSC-EWI-0040 - THE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
ROWGUIDCOL;
Copy

Bekannte Probleme

1. Rollen und Benutzer müssen zuvor für Maskierungsrichtlinien eingerichtet werden

Die Maskierungsrichtlinien von Snowflake können nur auf Spalten angewendet werden, nachdem die Richtlinien erstellt wurden. Damit dies funktioniert, muss der Benutzer die Richtlinien erstellen und sie Rollen zuweisen, und diese Rollen wiederum den Benutzern. Maskierungsrichtlinien können sich unterschiedlich verhalten, je nachdem, welcher Benutzer eine Abfrage durchführt.

SnowConvert führt diese Einrichtung nicht automatisch durch.

2. Für Maskierungsrichtlinien ist ein Snowflake Enterprise Konto oder höher erforderlich.

Höherer Rang. In der Snowflake-Dokumentation heißt es, dass die Maskierungsrichtlinien für Konten ab dem Rang Entreprise verfügbar sind.

Bemerkung

Weitere Informationen finden Sie unter CREATE MASKING POLICY – Snowflake-Dokumentation.

3. DEFAULT unterstützt nur konstante Werte

SQL Die Eigenschaft DEFAULT des Servers wird von Snowflake teilweise unterstützt, solange der zugehörige Wert eine Konstante ist.

4. FILESTREAM-Klausel wird in Snowflake nicht unterstützt.

Die gesamte FILESTSTREAM-Klausel ist auskommentiert, da sie in Snowflake nicht unterstützt wird.

5. SPARSE-Klausel wird in Snowflake nicht unterstützt.

Die gesamte SPARSE-Klausel ist auskommentiert, da sie in Snowflake nicht unterstützt wird. Wenn sie innerhalb einer ALTER COLUMN-Anweisung hinzugefügt wird und die einzige Änderung an der Spalte ist, wird die gesamte Anweisung entfernt, da sie nichts mehr hinzufügt.

Zugehörige EWIs

  1. [SSC-EWI-0040](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0040): Anweisung wird nicht unterstützt.

  2. [SSC-EWI-TS0061](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/sqlServerEWI. md#ssc-ewi-ts0061): ALTER COLUMN nicht unterstützt.

  3. [SSC-EWI-TS0078](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/sqlServerEWI. md#ssc-ewi-ts0078): Standardwert in Snowflake nicht erlaubt.

  4. [SSC-FDM-TS0009](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0009): Encrypted With in Snowflake nicht unterstützt.

  5. [SSC-FDM-TS0021](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0021): Es wurde ein MASKING POLICY als Ersatz für MASKED WITH erstellt.

  6. [SSC-FDM-TS0022](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0022): Der Benutzer muss zuvor die Maskierungsrolle definieren.

  7. [SSC-PRF-0002](../../general/technical-documentation/issues-and-troubleshooting/performance-review/README. md#ssc-prf-0002): Spalten, bei denen die Groß-/Kleinschreibung nicht beachtet wird, können die Leistung von Abfragen verringern.

COLUMN CONSTRAINT

Applies to
  • [x] SQL Server

  • [x] Azure Synapse Analytics

Beschreibung

Gibt die Eigenschaften eines PRIMARY KEY, FOREIGN KEY oder CHECK an, die Teil einer neuen Spalteneinschränkung ist, die mit Tabelle ändern. zu einer Tabelle hinzugefügt wurde

Syntax in SQL Server

 [ CONSTRAINT constraint_name ]   
{   
    [ NULL | NOT NULL ]   
    { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        [ WITH FILLFACTOR = fillfactor ]   
        [ WITH ( index_option [, ...n ] ) ]  
        [ ON { partition_scheme_name (partition_column_name)   
            | filegroup | "default" } ]   
    | [ FOREIGN KEY ]   
        REFERENCES [ schema_name . ] referenced_table_name   
            [ ( ref_column ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )  
}  
Copy

Syntax in Snowflake

 CREATE TABLE <name> ( <col1_name> <col1_type>    [ NOT NULL ] { inlineUniquePK | inlineFK }
                     [ , <col2_name> <col2_type> [ NOT NULL ] { inlineUniquePK | inlineFK } ]
                     [ , ... ] )

ALTER TABLE <name> ADD COLUMN <col_name> <col_type> [ NOT NULL ] { inlineUniquePK | inlineFK }
Copy

Wobei:

 inlineUniquePK ::=
  [ CONSTRAINT <constraint_name> ]
  { UNIQUE | PRIMARY KEY }
  [ [ NOT ] ENFORCED ]
  [ [ NOT ] DEFERRABLE ]
  [ INITIALLY { DEFERRED | IMMEDIATE } ]
  [ ENABLE | DISABLE ]
  [ VALIDATE | NOVALIDATE ]
  [ RELY | NORELY ]
Copy
 inlineFK :=
  [ CONSTRAINT <constraint_name> ]
  [ FOREIGN KEY ]
  REFERENCES <ref_table_name> [ ( <ref_col_name> ) ]
  [ MATCH { FULL | SIMPLE | PARTIAL } ]
  [ ON [ UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ]
       [ DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] ]
  [ [ NOT ] ENFORCED ]
  [ [ NOT ] DEFERRABLE ]
  [ INITIALLY { DEFERRED | IMMEDIATE } ]
  [ ENABLE | DISABLE ]
  [ VALIDATE | NOVALIDATE ]
  [ RELY | NORELY ]
Copy

CHECK

Applies to
  • [x] SQL Server

Beschreibung

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Wenn die CHECK-Klausel in der ALTER-Anweisung enthalten ist, kommentiert Snowconvert die gesamte Anweisung aus, da sie nicht unterstützt wird.

Beispielhafte Quellcode-Muster

SQL Server

 ALTER TABLE table_name
ADD column_name VARCHAR(255) 
CONSTRAINT constraint_name 
CHECK NOT FOR REPLICATION (column_name > 1);
Copy
Snowflake
 ALTER TABLE IF EXISTS table_name
ADD column_name VARCHAR(255)
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
CONSTRAINT constraint_name
CHECK NOT FOR REPLICATION (column_name > 1);
Copy

Bekannte Probleme

1. ALTER TABLE CHECK-Klausel wird in Snowflake nicht unterstützt.

Die gesamte ALTER TABLE CHECK-Klausel ist auskommentiert, da sie in Snowflake nicht unterstützt wird.

Zugehörige EWIs

  • [SSC-EWI-0035](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0035): Check-Anweisung wird nicht unterstützt.

FOREIGN KEY

Applies to
  • [x] SQL Server

  • [x] Azure Synapse Analytics

Beschreibung

Die Syntax für den Fremdschlüssel wird von SnowFlake vollständig unterstützt, mit Ausnahme der Klauseln [ NOT FOR REPLICATION ] und WITH CHECK.

Syntax in SQL Server

Lesen Sie die folgende SQL Server-Dokumentation für weitere Informationen.

 [ FOREIGN KEY ]  
REFERENCES [ schema_name . ] referenced_table_name  
[ ( ref_column ) ]  
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]  
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]  
[ NOT FOR REPLICATION ]
Copy

Syntax in Snowflake

 [ FOREIGN KEY ]
REFERENCES <ref_table_name> [ ( <ref_col_name> ) ]
[ MATCH { FULL | SIMPLE | PARTIAL } ]
[ ON [ UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ]
     [ DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION } ] ]
[ [ NOT ] ENFORCED ]
[ [ NOT ] DEFERRABLE ]
[ INITIALLY { DEFERRED | IMMEDIATE } ]
[ ENABLE | DISABLE ]
[ VALIDATE | NOVALIDATE ]
[ RELY | NORELY ]
Copy

Beispielhafte Quellcode-Muster

Allgemeiner Fall

SQL Server

 ALTER TABLE dbo.student 
ADD CONSTRAINT Fk_empid FOREIGN KEY(emp_id)
REFERENCES dbo.emp(id);

ALTER TABLE dbo.student 
ADD CONSTRAINT Fk_empid FOREIGN KEY(emp_id)
REFERENCES dbo.emp(id)
NOT FOR REPLICATION;
Copy

Snowflake

 ALTER TABLE dbo.student
ADD CONSTRAINT Fk_empid FOREIGN KEY(emp_id)
REFERENCES dbo.emp (id);

ALTER TABLE dbo.student
ADD CONSTRAINT Fk_empid FOREIGN KEY(emp_id)
REFERENCES dbo.emp (id);
Copy

WITHCHECK / NOCHECK-Fall

Beachten Sie, dass die Snowflake-Logik die CHECK-Klausel bei der Erstellung von Fremdschlüsseln nicht unterstützt. Die Anweisung WITH CHECK wird als nicht unterstützt markiert. Außerdem wird die WITH NO CHECK-Klausel entfernt, da dies das Standardverhalten in Snowflake ist und die Äquivalenz die gleiche ist.

Bitte sehen Sie sich die folgenden Beispiele an, um ein besseres Verständnis der Übersetzung zu erhalten.

SQL Server

 ALTER TABLE testTable
WITH CHECK ADD CONSTRAINT testFK1 FOREIGN KEY (table_id)
REFERENCES otherTable (Othertable_id);

ALTER TABLE testTable
WITH NOCHECK ADD CONSTRAINT testFK2 FOREIGN KEY (table_id)
REFERENCES otherTable (Othertable_id);
Copy

Snowflake

 ALTER TABLE testTable
----** SSC-FDM-0014 - CHECK STATEMENT NOT SUPPORTED **
--WITH CHECK
           ADD CONSTRAINT testFK1 FOREIGN KEY (table_id)
REFERENCES otherTable (Othertable_id);


ALTER TABLE testTable
ADD CONSTRAINT testFK2 FOREIGN KEY (table_id)
REFERENCES otherTable (Othertable_id);
Copy

Bekannte Probleme

1. NOT FOR REPLICATION-Klausel.

Snowflake hat einen anderen Ansatz für die Replikationsfälle. Bitte sehen Sie sich die folgende Dokumentation an.

2. WITHCHECK-Klausel.

Snowflake unterstützt die WITH CHECK-Anweisung nicht. In der folgenden Dokumentation finden Sie weitere Informationen.

Zugehörige EWIs

Keine zugehörigen EWIs.

PRIMARY KEY / UNIQUE

Applies to
  • [x] SQL Server

  • [x] Azure Synapse Analytics

Beschreibung

Alle optionalen Klauseln der Einschränkung PRIMARY KEY / UNIQUE werden in Snowflake entfernt.

Syntax in SQL Server

 { PRIMARY KEY | UNIQUE }
    [ CLUSTERED | NONCLUSTERED ]
    [ WITH FILLFACTOR = fillfactor ]
    [ WITH ( index_option [, ...n ] ) ]
    [ ON { partition_scheme_name (partition_column_name)
        | filegroup | "default" } ]
Copy

Beispielhafte Quellcode-Muster

SQL Server

 ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE;

ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name PRIMARY KEY
NONCLUSTERED;

ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE
WITH FILLFACTOR = 80;

ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name PRIMARY KEY
WITH (PAD_INDEX = off);

ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE
ON partition_scheme_name (partition_column_name);
Copy
Snowflake
 ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE;


ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name PRIMARY KEY;


ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE;


ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name PRIMARY KEY;


ALTER TABLE table_name
ADD column_name INTEGER
CONSTRAINT constraint_name UNIQUE;
Copy

Bekannte Probleme

Es wurden keine Probleme gefunden.

Zugehörige EWIs

Keine zugehörigen EWIs.

SET

ANSI_NULLS

Applies to
  • [x] SQL Server

  • [x] Azure Synapse Analytics

Beschreibung

Diese Anweisung legt die ISO-konforme Verhaltensweise der Vergleichsoperatoren Equals und Not Equal to fest, wenn sie mit Nullwerten in SQLServer verwendet werden. Bitte besuchen Sie SET ANSI_NULLS, um weitere Informationen über diese Anweisung zu erhalten.

Transact-SQL-Syntax

 SET ANSI_NULLS { ON | OFF }
Copy

Beispielhafte Quellcode-Muster

SET ANSI_NULLS ON

_“SET ANSI_NULLS ON wirkt sich nur dann auf einen Vergleich aus, wenn einer der Operanden des Vergleichs entweder eine Variable NULL oder ein Literal NULL ist. Wenn beide Seiten des Vergleichs Spalten oder zusammengesetzte Ausdrücke sind, wirkt sich die Einstellung nicht auf den Vergleich aus.“ (SQLServer ANSI_NULLS-Artikel).

Snowflake unterstützt diese Anweisung nicht, so dass im Fall von ANSI_NULLS ON dies mit einem FDM ([SSC-FDM-TS0027](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/teradataFDM. md#ssc-fdm-td0027)) markiert ist, da es bei der Ausführung von gleichen und nicht gleichen Vergleichsoperationen keine Bedeutung hat. Hier finden Sie eine Erklärung der NULL-Behandlung in Snowflake.

SQL Server
 SET ANSI_NULLS ON;
Copy
Snowflake
 ----** SSC-FDM-TS0027 - SET ANSI_NULLS ON STATEMENT MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE **
--SET ANSI_NULLS ON
Copy

SET ANSI_NULLS OFF

„Wenn ANSI_NULLS OFF ist, folgen die Vergleichsoperatoren Equal To (=) und Not Equal To (<>) nicht dem ISO-Standard. Eine SELECT-Anweisung, die WHERE column_name = NULL verwendet, gibt die Zeilen zurück, die in der Spalte_name Nullwerte haben. Eine SELECT-Anweisung, die WHERE column_name <> NULL verwendet, gibt die Zeilen zurück, die nicht-NULL Werte in der Spalte haben_“. (SQLServer ANSI_NULLS-Artikel).

Im Fall der Anweisung ANSI_NULLS OFF ist diese mit einem EWI ([SSC-EWI-0040](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0040)) gekennzeichnet, weil sie zusätzlichen manuellen Aufwand erfordert.

SQL Server
 SET ANSI_NULLS OFF;
Copy
Snowflake
 !!!RESOLVE EWI!!! /*** SSC-EWI-0040 - THE STATEMENT IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
SET ANSI_NULLS OFF;
Copy

Zugehörige EWIs

  1. [SSC-EWI-0040](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0040): Die Anweisung wird in Snowflake nicht unterstützt

  2. [SSC-FDM-0027](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0027): SET ANSI\Die Anweisung NULLS ON kann sich in Snowflake anders verhalten