Dans MS SQL Server 2008 R2, comment créer une nouvelle base de données basée sur le schéma de l'ancienne, mais sans copier aucune des données avec elle? J'utilise SQL Server Management Studio.
Cliquez avec le bouton droit sur la base de données et sélectionnez Tasks
-> Generate Scripts
.
Vous pouvez ensuite sélectionner tous les objets dont vous avez besoin ou seulement certains objets.
Il y a quelques options de script que vous devriez regarder:
Vous pouvez soit les créer dans une nouvelle fenêtre de requête, soit les enregistrer dans des fichiers SQL.
Ce script a été créé pour faciliter la pratique de la migration de la base de données d'un site Web majeur entre des schémas de base de données très différents. Ce script effectuera les tâches suivantes:
Vous voudrez probablement obtenir le code pour cela à partir de SSMS en utilisant la boîte de dialogue de sauvegarde. Cliquez sur l'icône encerclée pour obtenir le script de votre scénario spécifique.
N'oubliez pas d'inclure le USE MASTER
commande avant de supprimer la base de données de destination. Si vous exécutez ce script pour la deuxième fois dans une seule session SSMS, vous obtiendrez une erreur fatale si vous n'incluez pas cette commande. Nous utilisons également DROP DATABASE
ici pour non seulement supprimer le TargetDB périmé, mais aussi supprimer ses fichiers (Remarque, DB doit être "actif" pour que cela fonctionne)
Vous souhaiterez peut-être utiliser la boîte de dialogue SSMS pour générer ce script de restauration initial pour vous, similaire à la façon dont vous l'avez fait pour la partie 1 pour la sauvegarde.
N'utilisez pas Tronquer ici - cela ne fonctionnera pas si vous avez des clés étrangères
----------------------------------------------------------------------------------------
-- CREATE AN EMPTY COPY OF DATABASE
----------------------------------------------------------------------------------------
/* PART 1: Backup the good database */
BACKUP DATABASE [OriginalDB]
TO DISK = N'd:\backup.bak' WITH NOFORMAT, INIT,
NAME = N'OriginalDB-Full Database Backup', SKIP,
NOREWIND, NOUNLOAD, STATS = 33
GO
/* PART 2: If your destination database already exists, drop it */
USE master -- Make sure to include this -- it allows you to reuse script in same SSMS session
DROP DATABASE [migration]
/* PART 3: Restore the backup to the new location */
RESTORE DATABASE [TargetDB]
FROM DISK = N'D:\backup.bak' WITH FILE = 1,
MOVE N'OriginalDB' TO N'D:\sql data\TargetDB.mdf',
MOVE N'OriginalDB' TO N'C:\SQL Data\TargetDB_1.ldf',
NOUNLOAD, STATS = 33
GO
/* PART 4: Delete all tables' data in the migration testing target */
PRINT N'Clearing [TargetDB]'
USE [TargetDB]
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all" -- disable all constraints
EXEC sp_MSForEachTable "DELETE FROM ?" -- delete data in all tables
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all" -- enable all constraints
----------------------------------------------------------------------------------------
-- BLANK DATABASE COPY CREATED, READY FOR TESTING
----------------------------------------------------------------------------------------
Il y a un assistant de script sympa qui peut vous aider. Vous pouvez l'essayer avec un clic droit sur la base de données dans l'explorateur d'objets -> Tâches -> Générer des scripts. Vous pouvez choisir les objets de la base de données que vous souhaitez exporter.
Dans SQL Server Management Studio, vous pouvez cliquer avec le menu sur un objet et sélectionner ...
"Script [Object] As" ... "CREATE to"... "New Query Window"
Vous devez créer des scripts pour chaque objet que vous souhaitez créer.
Si vous voulez tout faire, cliquez sur la base de données dans le menu et sélectionnez
"Tâches" ... "Générer des scripts" et suivez l'assistant, conformément à cela article :