2009-12-17 6 views
4

Je ne sais pas si cela appartient ici ou sur ServerFault, mais je me demande si quelqu'un connaît un outil gratuit pour exporter un schéma SQL Server 2008? C'est seulement pour les tables et leurs index, les clés étrangères, etc. et il doit être un outil de ligne de commande pour s'exécuter dans le cadre d'un processus de construction. S'il peut lire une chaîne de connexion .net, ce serait génial (d'où la balise .net)Exportation de schéma gratuite pour SQL Server 2008?

Les données ne sont pas nécessaires et n'importe quel type de version/diff est également "Nice, mais pas nécessaire". Et oui, je suis au courant des outils impressionnants SQL Server Red-Gate, malheureusement c'est un projet passe-temps avec 0 Budget :-(

Répondre

5

Pas sûr d'un outil prêt à l'emploi, mais c'est facile assez à faire avec la bibliothèque SMO (Microsoft.SqlServer.Smo, .SmoEnum, .SqlEnum):

using Microsoft.SqlServer.Management.Smo; 

var server = new Server("localhost"); 
var database = server.Databases["databaseName"]; 
var transfer = new Transfer(database); 
var options = new ScriptingOptions(); 
// set transfer and options object properties to reflect what you want to script: 
// i.e. all tables, indexes, triggers, etc. 
options.FileName = "c:\\temp\\databaseName_schema.sql"; 
transfer.Options = options; 
transfer.ScriptTransfer(); 

J'ai construit un outil simple en utilisant cette méthode pour régénérer le script de création de base de données de mon produit dans le cadre des étapes de préconfiguration dans le programme de configuration.

+0

FYI: après en avoir écrit plusieurs moi-même, je peux dire que vous êtes en train d'étaler la partie dure, qui est de régler correctement les options. Cela est particulièrement vrai car la plupart des options sont spécifiques au type SQL particulier (tables, triggers, etc.) et lèveront fréquemment des exceptions si elles restent activées pour les types auxquels elles ne s'appliquent pas. – RBarryYoung

+0

Vous ne savez pas ce que vous voulez dire, RBY. Les options auxquelles je me réfère sont toutes des booléens simples: 'CopyAllDatabaseTriggers',' CopyAllTables', 'IncludeDatabaseContext',' WithDependencies', etc. Il y en a un certain nombre, vrai, mais c'est une simple question de mettre le plus 'true', les exceptions habituelles étant les objets de sécurité comme les connexions et les utilisateurs, qui, selon la base de données source, peuvent contenir des entrées indésirables dans le script final. –

2

Juste par curiosité avez-vous essayé d'utiliser les projets SQL Server dans Visual Studio?

Une autre façon d'y parvenir est de passer par des scripts SQL, comme je suis sûr que vous le savez: la commande generate script peut être exécutée en ligne de commande, je pense:

+0

Je pensais qu'il y avait seulement dans l'édition de base de données VS Team System, mais j'ai aussi trouvé une « base de données Project "dans Visual Studio 2008 Professional. Je vais regarder ça, merci pour les heads up! –

+0

Il n'y a pas de commande "Generate Script" dans T-SQL, ni AFAIK dans SQLCMD. C'est seulement une tâche menu/bouton dans Management Studio (qui appelle SMO pour le faire). Il peut, cependant, être écrit à partir de Powershell, (SQL 2008) qui pourrait être ce à quoi vous pensiez. – RBarryYoung

1

Il existe plusieurs outils de ligne de commande gratuits comme celui-ci sur CodePlex. L'un d'eux est Scriptio, here.

2

Vous pouvez toujours utiliser SQL Server Management Studio pour le faire, cliquez avec le bouton droit sur la base de données, sélectionnez 'Tâches' puis 'Générer des scripts'.

0

Microsoft a lancé il y a quelques semaines un nouvel outil appelé mssql-scripter. C'est un outil gratuit en ligne de commande basé sur Python, et vous pouvez trouver l'annonce officielle here. Essentiellement, le scripteur vous permet de générer un script T-SQL pour votre base de données/objet de base de données en tant que fichier .sql. Vous pouvez générer le fichier, puis l'exécuter. Cela pourrait être une bonne solution pour vous de générer le schéma (l'option par défaut) votre base de données et ses objets tels que les tables et les index pour voir aussi le diff car c'est un fichier .sql qui est généré. Voici un exemple d'utilisation rapide pour vous aider à démarrer:

$ pip install mssql-scripter 
# script the database schema and data piped to a file. 
$ mssql-scripter -S localhost -d AdventureWorks -U sa > ./adventureworks.sql 

Plus d'exemples d'utilisation sont sur notre page GitHub ici: https://github.com/Microsoft/sql-xplat-cli/blob/dev/doc/usage_guide.md