Frage

ich eine MySQL-Datenbank haben, dass ich auf SQL Server bin migrieren. Die Anwendung, die Referenzen die Datenbank bricht, wenn ich es gegen SQL Server ausgeführt werden, da SQL Server nicht die impliziten Standardwerte bietet, dass MySQL bietet.

wollte ich sehen, ob es eine Möglichkeit ist Skript zu generieren, die standardmäßig auf alles NOT NULL-Spalten zwingen würden, die angegeben keinen Standard haben. Auf diese Weise kann ich imitieren MySQL implizite Standardwerte explizite Vorgaben in SQL Server mit

War es hilfreich?

Lösung

versuchen so etwas wie dieses. Dies wird einige SQL generieren, dass Sie die fehlenden Standardwerte hinzufügen können ausgeführt werden. Also diese laufen und dann den Ausgang nehmen und führen, dass tatsächlich die Standardwerte hinzuzufügen. Außerdem können Sie zwicken, was ich als die Standardwerte in der CASE gesetzt:

SELECT
'ALTER TABLE '+c.TABLE_CATALOG+'.'+c.TABLE_SCHEMA+'.'+c.TABLE_NAME
    +' ADD CONSTRAINT DF_'+c.TABLE_NAME+'_'+c.COLUMN_NAME+'_'+CONVERT(varchar(5),c.ORDINAL_POSITION)
    +' DEFAULT '
        +CASE c.DATA_TYPE
             WHEN 'money'         THEN '0.0'
             WHEN 'int'           THEN '0'
             WHEN 'text'          THEN ''''''
             WHEN 'smallint'      THEN '0'
             WHEN 'datetime'      THEN 'GETDATE()'
             WHEN 'varchar'       THEN ''''''
             WHEN 'numeric'       THEN '0'
             WHEN 'tinyint'       THEN '0'
             WHEN 'smalldatetime' THEN 'GETDATE()'
             WHEN 'float'         THEN '0.0'
             WHEN 'char'          THEN ''''''
             WHEN 'bigint'        THEN '0'
             WHEN 'bit'           THEN '0'
             WHEN 'nvarchar'      THEN ''''''
         END
        +' FOR '+c.COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS    c
    WHERE c.COLUMN_DEFAULT IS NULL AND IS_NULLABLE='NO'
        AND c.DATA_TYPE NOT IN ('image','varbinary','binary')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top