IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Génération de scripts de tables


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Par défaut Génération de scripts de tables
    Y a-t-il un moyen de générer le script d'un table en T-SQL ou mettre une tâche Generate Script dans une job sur le serveur. Je fonctionne avec MS SQL Server 2005.

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Je suis actuellement en train de travailler sur un script qui se chargera à terme d'exporter dans un fichier texte le code pouvant servir à créer tous les objets d'une base de données.
    Si cela vous intéresse, je ne vais pas tarder à le publier sur mon blog.

    @++

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Par défaut
    Merveilleux! Je vais suivre de très près votre blog.

    Merci beaucoup

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Par défaut
    Bonjour elsuket,

    Avez-vous une idée à savoir quand le script sera posté sur votre blog?

    Merci

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour TCW78,

    Je suis vraiment désolé pour le retard que cela a pu prendre, j'ai eu une fin d'année très mouvementée mais je vous jure que j'ai pensé à vous peu avant les vacances de Noël.
    Je m'y remets ce week-end (je vais ENFIN avoir un peu de temps !) et je le publie ici et sur mon blog

    @++

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Je viens de trouver un peu de temps pour faire ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    -------------------------------------------------------------------
    -- 28/01/2009 - ElSuket
    -- Imprime le script de la structure et des contraintes d'une table
    -- utilisation : EXEC dbo.uspScripteTable 'maTable'
    -------------------------------------------------------------------
    CREATE PROCEDURE uspScripteTable
    	@nomTable SYSNAME
    AS
    BEGIN
    	DECLARE @script VARCHAR(2048)
     
    	SELECT @script = ISNULL(@script, '') + CHAR(9) + 
    		COLONNES.name +
    		CASE
    			WHEN COMPCOL.object_id IS NOT NULL THEN ''
    			ELSE ' ' + UPPER(TYPES.name)
    		END + '' + 
    		CASE COLONNES.is_identity
    			WHEN 0 THEN ''
    			WHEN 1 THEN ' IDENTITY(' + CAST(IDENT_SEED(TABLES.name) AS VARCHAR) + ', ' + CAST(IDENT_INCR(TABLES.name) AS VARCHAR) + ')'
    		END + 
    		CASE COLONNES.is_nullable
    			WHEN 0 THEN ' NOT NULL'
    			WHEN 1 THEN ' NULL'
    		END +
    		CASE
    			WHEN FK_COLONNES.constraint_object_id IS NULL THEN ''
    			ELSE ' CONSTRAINT FK_' + TABLES.name + '_' + COLONNES.name + ' FOREIGN KEY (' + COLONNES.name + ') REFERENCES ' + TAB_FK.name --OBJECT_NAME(FK_COLONNES.parent_object_id)
    		END + 
    		CASE
    			WHEN DF.object_id IS NULL THEN ''
    			ELSE ' CONSTRAINT DF_' + TABLES.name + '_' + COLONNES.name + ' DEFAULT ' + REPLACE(REPLACE(DF.definition, '(', ''), ')', '')
    		END +
    		CASE
    			WHEN CHK.object_id IS NULL THEN ''
    			ELSE ' CONSTRAINT CHK_' + TABLES.name + '_' + COLONNES.name + ' CHECK (' + REPLACE(REPLACE(REPLACE(REPLACE(CHK.definition, '(', ''), ')', ''), '[', ''), ']', '') + ')'
    		END +  
    		CASE
    			WHEN COMPCOL.object_id IS NULL THEN ''
    			ELSE ' AS (' + REPLACE(REPLACE(REPLACE(REPLACE(COMPCOL.definition, '(', ''), ')', ''), '[', ''), ']', '') + ')'
    		END +
    		CASE
    			WHEN ISNULL(INDEXES.is_primary_key, 0) = 0 THEN ''
    			ELSE ' CONSTRAINT PK_' + TABLES.name + ' PRIMARY KEY'
    		END + 
    		CASE
    			WHEN ISNULL(INDEXES.is_unique_constraint, 0) = 0 THEN ''
    			ELSE ' CONSTRAINT UQ_' + TABLES.name + '_' + COLONNES.name + ' UNIQUE'
    		END + ',' + CHAR(10)
    	FROM sys.tables TABLES -- Tables
    	JOIN sys.columns COLONNES ON TABLES.object_id = COLONNES.object_id -- Colonnes
    	JOIN sys.types TYPES ON COLONNES.user_type_id = TYPES.user_type_id -- types
    	LEFT JOIN sys.index_columns COL_INDEX -- indexes
    		ON COL_INDEX.object_id = COLONNES.object_id
    		AND COL_INDEX.column_id  = COLONNES.column_id
    	LEFT JOIN sys.indexes INDEXES
    		ON INDEXES.object_id = COL_INDEX.object_id
    		AND INDEXES.index_id = COL_INDEX.index_id
    	LEFT JOIN sys.default_constraints DF -- contraintes de valeur par défaut
    		ON DF.parent_object_id = TABLES.object_id
    		AND DF.parent_column_id = COLONNES.column_id
    	LEFT JOIN sys.check_constraints CHK -- contraintes CHECK
    		ON CHK.parent_object_id = TABLES.object_id
    		AND CHK.parent_column_id = COLONNES.column_id
    	LEFT JOIN sys.computed_columns COMPCOL -- colonnes calculées
    		ON COMPCOL.column_id = COLONNES.column_id
    		AND COMPCOL.object_id = TABLES.object_id
    	LEFT JOIN sys.foreign_key_columns FK_COLONNES
    		ON FK_COLONNES.parent_object_id = TABLES.object_id
    		AND FK_COLONNES.parent_column_id = COLONNES.column_id
    	LEFT JOIN sys.columns COL_FK
    		ON FK_COLONNES.referenced_object_id = COL_FK.object_id
    		AND FK_COLONNES.referenced_column_id = COL_FK.column_id
    	LEFT JOIN sys.tables TAB_FK ON COL_FK.object_id = TAB_FK.object_id
    	WHERE TABLES.name = @nomTable
     
    	SELECT @script = 'CREATE TABLE ' + @nomTable + CHAR(10) + 
    					'(' + CHAR(10) +
    					SUBSTRING(@script, 1, LEN(@script) - 2) + CHAR(10) + 
    					')' + CHAR(10)
     
    	PRINT @script
    END
    Il ne comporte pas encore les indexes :s

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. script drop tables
    Par couse1 dans le forum Oracle
    Réponses: 3
    Dernier message: 29/03/2006, 13h56
  2. [Oracle] Script création Table, violation de contraintes
    Par boudou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/02/2006, 13h47
  3. génération de script
    Par pascalfv dans le forum Oracle
    Réponses: 1
    Dernier message: 13/02/2006, 18h49
  4. [Designer 6i] Automatisation de la génération de scripts
    Par Laurent Dardenne dans le forum Designer
    Réponses: 3
    Dernier message: 31/10/2004, 10h33
  5. Génération de script SQL avec les données
    Par borgfabr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/03/2004, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo