web-dev-qa-db-fra.com

Comment générer des scripts pour recréer une table à l'aide de SQL Server Management Studio [Schéma et données]?

J'ai une table dans une base de données SQL Server locale. Je veux recréer cette table dans une base de données hébergée.

Ce que je veux faire, c'est avoir un script qui, lorsqu'il est exécuté sur la base de données hébergée, cette table est recréée avec toutes les données, etc.

Comment créer ce script à l'aide de SQL Server Management Studio? Merci.

52
user763554

1- Ouvrez SQL Server Management Studio.

2- Faites un clic droit sur la base de données qui contient votre table souhaitée.

3- Sélectionnez "Tâches => Générer des scripts ...".

4- Suivez l'assistant et choisissez les objets pour lesquels vous souhaitez générer des scripts (Tables, Vues, ​​Procédures stockées, etc ...).

5- À partir de l'étape suivante, cliquez sur "Avancé", et pour le nœud qui est étiqueté "Types de données à script" choisissez "Schéma et données".

enter image description here

6- Sauvegardez votre script et souriez :)

94
Mohammed Swillam
select  'create table [' + so.name + '] (' + o.list + ')' + CASE WHEN tc.Constraint_Name IS NULL THEN '' ELSE 'ALTER TABLE ' + so.Name + ' ADD CONSTRAINT ' + tc.Constraint_Name  + ' PRIMARY KEY ' + ' (' + LEFT(j.List, Len(j.List)-1) + ')' END
from    sysobjects so
cross apply
    (SELECT 
        '  ['+column_name+'] ' + 
        data_type + case data_type
            when 'sql_variant' then ''
            when 'text' then ''
            when 'ntext' then ''
            when 'xml' then ''
            when 'decimal' then '(' + cast(numeric_precision as varchar) + ', ' + cast(numeric_scale as varchar) + ')'
            else coalesce('('+case when character_maximum_length = -1 then 'MAX' else cast(character_maximum_length as varchar) end +')','') end + ' ' +
        case when exists ( 
        select id from syscolumns
        where object_name(id)=so.name
        and name=column_name
        and columnproperty(id,name,'IsIdentity') = 1 
        ) then
        'IDENTITY(' + 
        cast(ident_seed(so.name) as varchar) + ',' + 
        cast(ident_incr(so.name) as varchar) + ')'
        else ''
        end + ' ' +
         (case when IS_NULLABLE = 'No' then 'NOT ' else '' end ) + 'NULL ' + 
          case when information_schema.columns.COLUMN_DEFAULT IS NOT NULL THEN 'DEFAULT '+ information_schema.columns.COLUMN_DEFAULT ELSE '' END + ', ' 

     from information_schema.columns where table_name = so.name
     order by ordinal_position
    FOR XML PATH('')) o (list)
left join
    information_schema.table_constraints tc
on  tc.Table_name       = so.Name
AND tc.Constraint_Type  = 'PRIMARY KEY'
cross apply
    (select '[' + Column_Name + '], '
     FROM   information_schema.key_column_usage kcu
     WHERE  kcu.Constraint_Name = tc.Constraint_Name
     ORDER BY
        ORDINAL_POSITION
     FOR XML PATH('')) j (list)
where   xtype = 'U'
AND name    NOT IN ('dtproperties')
4
IR.Programmer

Vous pouvez le faire à l'aide de la tâche de base de données Générer des scripts. Cliquez avec le bouton droit sur la base de données> Tâches> Générer des scripts ... Choisissez "Sélectionner des objets de base de données spécifiques" et la table souhaitée.

Sur la page Définir les options de script, cliquez sur Avancé. Il y a une option "Types de données à script", choisissez "Schéma et données". Choisissez où l'enregistrer. Prochain. Prochain. Terminer.

C'est la réponse cependant, si la table contient une grande quantité de données, je recommande d'utiliser bcp out ou une autre méthode pour exporter les données. Si le nouveau serveur se trouve sur le même réseau, vous pouvez également le sélectionner en tant que serveur lié.

La méthode de script générera des instructions d'insertion individuelles.

3
Russell Hart