2009-10-02 5 views
4

Je suis à la recherche de solutions par ligne de commande ou script pour extraire le DDL de SQL Server 2005+ pour tous les objets de base de données: tables, procs stockés, vues, index/index, contraintes, etc. Les outils GUI ne sont pas intéressants.SQL Server est-il parallèle à Oracle DBMS_METADATA.GET_DDL?

La préférence est pour les outils intégrés, car ce serait le plus comparable aux choses DBMS_METADATA d'Oracle. En outre, la préférence pour une solution qui est aussi simple que d'Oracle pour obtenir le DDL out - par exemple, une seule ligne:

 

    SELECT DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE') FROM DUAL 

Note: Faire avancer les choses pour les procédures dans SQL Server 2005 semble facile, mais je ne peux pas trouver des références à quelque chose de similaire pour d'autres objets (comme des tableaux).

 

    SELECT definition 
    FROM Sys.sql_modules 
    WHERE object_id = OBJECT_ID('MyProc') 

Merci d'avance!

+1

Il semble que la syntaxe oracle soit vraiment 'select ... from dual'. –

Répondre

4

Il n'y a pas de support dans le langage Transact-SQL. Les bibliothèques client (SMO) peuvent le faire en utilisant un objet Scripter, voir l'exemple au http://msdn.microsoft.com/en-us/library/ms162153.aspx. Vous pouvez utiliser SMO de PowerShell comme solution scriptée. SQL Management Studio dispose également d'une option (clic droit sur une base de données, aller à Tâches, sélectionnez Générer des scripts), il utilise un SMO Scripter sous les couvertures.

+0

Je soupçonnais qu'il n'y aurait peut-être rien eu de similaire pour sortir le DDL dans un seul paquebot. Je vais enquêter sur les trucs SMO - merci beaucoup! –

2

J'ai écrit SMOscript, un outil de ligne de commande qui utilise SMO pour générer des fichiers DDL de tous les objets de base de données.

+0

Merci - Je vais donner un coup d'oeil à SMOscript! –

Questions connexes