Pergunta

Eu tenho um banco de dados MySQL que estou migrando para o SQL Server. O aplicativo que faz referência ao banco de dados quebra quando o executo contra o SQL Server porque o SQL Server não oferece os padrões implícitos que o MySQL oferece.

Eu queria ver se existe uma maneira de gerar script que forçaria os padrões em todas as colunas não nulas que não possuem um padrão especificado. Dessa forma, posso imitar os padrões implícitos do MySQL usando padrões explícitos no SQL Server

Foi útil?

Solução

Experimente algo assim. Isso gerará algum SQL que você pode executar para adicionar os padrões ausentes. Então execute isso e depois pegue a saída e execute isso para adicionar os padrões. Além disso, você pode querer ajustar o que eu defini como os padrões no 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')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top