89 votes

Base de données entière de script SQL-Server

Est-il possible que je peux obtenir un script de toutes les tables, procs et autres objets d’une base de données ? Je sais il y a une option pour la base de données de script, mais il ne m’a donné une sorte de script de niveau supérieur, certainement pas un script pour créer tous les tableaux, les procs, udfs,. etc.

154voto

Chris Brandsma Points 7225

De Management Studio, faites un clic droit sur votre base de données. Tâches-> générer Scripts.

Qui devrait le faire.

12voto

Seth Reno Points 2221

J'ai écrit un utilitaire de ligne de commande nommé schemazen qui fait cela. C'est beaucoup plus rapide que les scripts de gestion de studio qu'il n'utilise pas de SMO.

Pour générer les scripts d'exécution:

schemazen.exe script --server localhost --base de données db-scriptDir c:\somedir

Alors pour recréer la base de données de l'exécution des scripts:

schemazen.exe créer: server localhost --base de données db-scriptDir c:\somedir

4voto

devio Points 22981

J’ai écrit un utilitaire pour cette tâche, SMOscript.

Génération du script est effectuée par la bibliothèque SMO et prend en charge les nouveaux types d’objets dans SQL 2005 et 2008.

3voto

Si. Points 10543

Nous nous sommes retrouvés à l'aide d'une combinaison de SSMS de génération de script pour extraire le schéma et les données, et ensuite utiliser notre propre base de données de l'outil de mots-clés et analyse de base de jetons de remplacement dans les scripts. Il assure également les scripts ne sont appliqués qu'une fois.

Pourquoi?

  • Nous devons soutenir les installations sur SQL Server 2000, 2005 et 2008, et il y a des changements de types de données entre les différentes versions, par exemple 2005+ ont nvarchar(max), alors que 2000 prend en charge uniquement ntext. Donc, nos scripts utiliser un jeton sur la base db choix remplace avec le type correct.
  • L'exécution de certains scripts nécessite une période d'attente après l'exécution, par exemple, Nous avons trouvé si vous n'avez pas à attendre quelques secondes après la création d'une nouvelle bases de données via un script, SQL Server peut échouer parfois (parce qu'il n'a pas eu le temps de créer les fichiers db) quand il est allé à créer des tables, etc.
  • Nous avons voulu conserver un historique de ce que les scripts ont été exécutés, et quand.
  • Nous avons voulu permettre à nos Wix programme d'installation MSI pour spécifier la chaîne de connexion et d'identification, et avaient besoin d'un moyen de passer ces dans les scripts, donc une fois de plus, à l'aide de jetons et de la logique conditionnelle.

Exemple de script (édité par souci de concision)

-- Sleep: 5 
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO

EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO

USE [$Database$]
GO

IF '1'!='$IntegratedSecurity$'
BEGIN
	CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
	CREATE USER [$User$] FOR LOGIN [$Login$]
	EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO

0voto

polyglot Points 1143

Si vous avez besoin de le faire par programme, vous pouvez utiliser la bibliothèque SQL DMO (OLE) contre SQL Server 2000, mais plus probablement vous pouvez utiliser la bibliothèque de SMO SQL (bibliothèques .NET natives) contre SQL Server 2005 et versions ultérieures.

Ces deux bibliothèques font partie intégrante de l’installation des outils d’administration SQL Server.

Il s’agit dans le cas où la génération du script de base de données complète de SQL Server Management Studio ne suffit pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X