Domanda

Ho un database MySQL che sono la migrazione a SQL Server. L'applicazione che fa riferimento le pause del database quando l'eseguo contro SQL Server perché SQL Server non offre le impostazioni di default impliciti che MySQL offre.

ho voluto vedere se c'è un modo per generare script che costringerebbe default su tutte le colonne non nullo che non hanno un predefinito specificato. In questo modo posso imitare default impliciti di MySQL utilizzando le impostazioni predefinite esplicite in SQL Server

È stato utile?

Soluzione

provare qualcosa di simile. questo genererà un certo SQL che è possibile eseguire per aggiungere i valori predefiniti mancanti. Quindi eseguire questo e poi prendere l'uscita ed eseguire tale da aggiungere in realtà le impostazioni predefinite. Inoltre, si consiglia di modificare quello che ho impostato come predefinite nel caso:

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')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top