Je souhaite automatiser la génération de scripts dans SQL Server Management Studio 2008.
En ce moment, ce que je fais est:
- Faites un clic droit sur ma base de données, Tâches, "Générer des scripts ..."
- sélectionnez manuellement toutes les options d'exportation dont j'ai besoin et appuyez sur Tout sélectionner dans l'onglet "Sélectionner un objet"
- Sélectionnez le dossier d'exportation
- Appuyez finalement sur le bouton "Terminer"
Existe-t-il un moyen d'automatiser cette tâche?
Edit: Je souhaite générer des scripts de création , pas modifier des scripts.
Réponses:
Ce que Brann mentionne dans la suite d'équipe Visual Studio 2008 SP1 est la version 1.4 de l'assistant de publication de base de données. Il est installé avec SQL Server 2008 (peut-être uniquement professionnel?) Dans \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ Publishing \ 1.4. L'appel VS de l'explorateur de serveur appelle simplement ceci. Vous pouvez obtenir les mêmes fonctionnalités via la ligne de commande comme:
Je ne sais pas si la v1.4 a les mêmes problèmes que la v1.1 (les utilisateurs sont convertis en rôles, les contraintes ne sont pas créées dans le bon ordre), mais ce n'est pas une solution pour moi car elle ne script pas les objets à différents fichiers comme le fait l'option Tâches-> Générer des scripts dans SSMS. J'utilise actuellement une version modifiée de Scriptio (utilise l'API MS SMO) pour remplacer l'assistant de publication de base de données (sqlpubwiz.exe). Il n'est actuellement pas scriptable à partir de la ligne de commande, je pourrais ajouter cette contribution à l'avenir.
Scriptio a été initialement publié sur le blog de Bill Graziano, mais a ensuite été publié sur CodePlex par Bill et mis à jour par d'autres. Lisez la discussion pour savoir comment compiler pour une utilisation avec SQL Server 2008.
http://scriptio.codeplex.com/
EDIT: J'ai depuis commencé à utiliser le produit SQL Compare de RedGate pour ce faire. C'est un très bon remplacement pour tout ce que l'assistant de publication SQL aurait dû être. Vous choisissez une base de données, une sauvegarde ou un instantané comme source et un dossier comme emplacement de sortie et tout est bien vidé dans une structure de dossiers. Il s'agit du même format que celui utilisé par leur autre produit, SQL Source Control.
la source
SqlPubwiz a des options très limitées par rapport à la génération de script dans SSMS. En revanche, les options disponibles avec SMO correspondent presque exactement à celles de SSMS, ce qui suggère qu'il s'agit probablement du même code. (J'espère que MS ne l'a pas écrit deux fois!) Il existe plusieurs exemples sur MSDN comme celui-ci qui montrent des tables de script en tant qu'objets individuels. Cependant, si vous voulez que tout scripte correctement avec un schéma «complet» qui inclut des objets «DRI» (Declarative Referential Integrity) comme des clés étrangères, alors le script de tables individuellement ne fonctionne pas correctement les dépendances. J'ai trouvé qu'il était nécessaire de collecter tous les URN et de les remettre au scripteur sous forme de tableau. Ce code, modifié de l'exemple,
la source
Microsoft.SqlServer.Management.SqlScriptPublish.ScriptPublishWizard
partir de l'assembly C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Microsoft.SqlServer.Management.SqlScriptPublishUI.dll. C'est ce qu'utilise SSMS. (Vous pouvez également consulter la classeMicrosoft.SqlServer.Management.UI.GenerateScript
de l'assembly C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ ReplicationDialog.dll.)J'ai écrit un utilitaire de ligne de commande open source nommé SchemaZen qui fait cela. C'est beaucoup plus rapide que le script du studio de gestion et sa sortie est plus conviviale pour le contrôle de version. Il prend en charge la création de scripts à la fois de schéma et de données.
Pour générer des scripts, exécutez:
Ensuite, pour recréer la base de données à partir de scripts exécutez:
la source
Vous pouvez utiliser SQL Server Management Object (SMO) pour automatiser les tâches de gestion de SQL Server 2005, y compris la génération de scripts: http://msdn.microsoft.com/en-us/library/ms162169.aspx .
la source
Si vous êtes un développeur, optez pour SMO. Voici un lien vers la classe Scripter, qui est votre point de départ:
Classe de scripteur
la source
Je ne vois pas de PowerShell avec SQLPSX mentionné dans aucune de ces réponses ... Personnellement, je n'ai pas joué avec mais il semble magnifiquement simple à utiliser et parfaitement adapté à ce type de tâches d'automatisation, avec des tâches telles que:
(réf: http://www.sqlservercentral.com/Forums/Topic1167710-1550-1.aspx#bm1168100 )
Page du projet: http://sqlpsx.codeplex.com/
Le principal avantage de cette approche est qu'elle combine la configurabilité / personnalisation de l'utilisation directe de SMO, avec la commodité et la maintenabilité d'utiliser un outil existant simple comme l'assistant de publication de base de données.
la source
Dans Outils> Options> Concepteurs> Concepteurs de tables et de bases de données, il existe une option pour «Générer automatiquement des scripts de modification» qui en générera un pour chaque modification que vous apportez au moment où vous l'enregistrez.
la source
Vous pouvez le faire avec du code T-SQL en utilisant les tables INFORMATION_SCHEMA.
Il existe également des outils tiers - j'aime Apex SQL Script précisément pour l'utilisation dont vous parlez. Je l'exécute complètement à partir de la ligne de commande.
la source
Essayez les nouveaux outils de ligne de commande SQL Server pour générer des scripts T-SQL et surveiller les vues de gestion dynamique.
A travaillé pour moi comme du charme. Il s'agit d'un nouvel outil basé sur python de Microsoft qui s'exécute à partir de la ligne de commande. Tout fonctionne comme décrit sur la page Microsoft (voir le lien ci-dessous) a fonctionné pour moi avec le serveur SQL 2012.
Vous l'installez avec pip:
Vue d'ensemble des paramètres de commande comme d'habitude avec h pour obtenir de l'aide:
Astuce: si vous vous connectez à SQL-Server via l'authentification Windows, laissez simplement le nom d'utilisateur et le mot de passe.
https://cloudblogs.microsoft.com/sqlserver/2017/05/17/try-new-sql-server-command-line-tools-to-generate-t-sql-scripts-and-monitor-dynamic-management- vues /
la source
Si vous voulez une solution Microsoft, vous pouvez essayer: Assistant Publication de base de données Microsoft SQL Server 1.1
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Il crée un processus par lots que vous pouvez exécuter à tout moment pour reconstruire les scripts.
la source
J'ai utilisé DB Comparer - Son script entier est gratuit et sans tracas et peut comparer à une autre base de données et produire également un script Diff. Excellent pour les scripts de modification du développement à la production. http://www.dbcomparer.com/
la source
Il existe également cet outil de ligne de commande simple que je construis pour mes besoins.
http://mycodepad.wordpress.com/2013/11/18/export-ms-sql-database-schema-with-c/
Il peut exporter une base de données entière et tente d'exporter des objets chiffrés. Tout est stocké dans des dossiers et des fichiers sql séparés pour une comparaison facile des fichiers.
Le code est également disponible sur github.
la source
À partir de Visual Studio 2008 SP1 TeamSuite:
Dans l'onglet Explorateur de serveurs / Connexions de données, il existe un outil de publication vers le fournisseur qui fait la même chose que «Assistant de publication de base de données Microsoft SQL Server», mais qui est compatible avec MS Sql Server 2008.
la source
J'utilise VS 2012 (pour les bases de données sur MSSQL Server 2008) comparer la base de données a une option pour l'enregistrer, la comparaison et les options. Ce sont essentiellement vos paramètres de livraison. Après cela, vous pouvez mettre à jour ou générer un script.
Je trouve juste qu'il est un peu difficile de le charger à partir d'un fichier plus tard (glisser-déposer depuis l'explorateur Windows) car je ne vois pas le fichier dans l'explorateur de solutions.
la source