Voici comment générer le script des objets de base de données (tables, vues, procédures stockées, fonctions, …) sans ses données, à l’aide de SQL Server Management Studio.
Commençons par un clic-droit sur la base de données à scripter :
Immédiatement l’Assistant Génération de Scripts SQL Server démarre :
Après avoir cliqué sur Suivant, nous pouvons choisir la base de données de l’instance SQL Server courante que nous voulons scripter.
Comme nous voulons recréer toute l’organisation logique qu’abrite la base de données, il nous suffit de cocher « Générer un script pour tous les objets dans la base de données »
Ici nous pouvons choisir quelques options pour la génération du script, notamment dès SQL Server 2008, la génération des instructions INSERT pour disposer également des données
Généralement c’est une étape que l’on peut sauter, car les options de script sont correctement configurées.
Ici nous pouvons choisir vers quel support nous allons générer le script, l’option « Générer un script dans une nouvelle fenêtre de requête » étant sélectionnée par défaut :
Cliquons sur suivant : nous obtenons un résumé du paramétrage du script
En cliquant sur « Terminer« , la génération débute :
Et dès la fin de la génération, une nouvelle fenêtre de requête est ouverte, et donne le script :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | USE [ELSUKET] GO /****** Object: Table [dbo].[TbParametres] Script Date: 08/11/2009 23:25:27 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[TbParametres]( [IDParametre] [int] IDENTITY(1,1) NOT NULL, [nomParametre] [varchar](20) NOT NULL, CONSTRAINT [PK_TbParametres_IDParametre] PRIMARY KEY CLUSTERED ( [IDParametre] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [UQ_TbParametres_nomParametre] UNIQUE NONCLUSTERED ( [nomParametre] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO /****** Object: UserDefinedFunction [dbo].[FnGetLastSuccessfulJobExecution] Script Date: 08/11/2009 23:25:30 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ---------------------------------------------------------------------------------------- -- Nicolas SOUQUET - 04/08/2009 - Recherche la dernière date de bonne exécution d'un job ---------------------------------------------------------------------------------------- CREATE FUNCTION [dbo].[FnGetLastSuccessfulJobExecution] (@nomJob SYSNAME) RETURNS DATETIME AS BEGIN RETURN ( SELECT DateTimeExec + 1 FROM ( SELECT MAX(CAST(STUFF(STUFF(DateExec, 12, 0, ':'), 15, 0, ':') AS DATETIME)) AS DateTimeExec FROM ( SELECT CAST(H.run_date AS CHAR(8)) + ' ' + CASE LEN(CAST(H.run_time AS VARCHAR(6))) WHEN 5 THEN '0' + CAST(H.run_time AS CHAR(5)) ELSE CAST(H.run_time AS CHAR(6)) END AS DateExec FROM msdb.dbo.sysjobs AS J JOIN msdb.dbo.sysjobhistory AS H ON J.job_id = H.job_id WHERE J.name = @nomJob AND H.run_status = 1 AND H.step_id = 1 ) AS EXEC_JOB_TEST ) AS DER_EXEC_JOB_TEST_OK ) END GO |
Comme on le voit, il n’y a pas l’instruction CREATE DATABASE.
Qu’à cela ne tienne, il nous suffit de la générer aussi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | USE [master] GO /****** Object: Database [ELSUKET] Script Date: 08/11/2009 23:34:04 ******/ CREATE DATABASE [ELSUKET] ON PRIMARY ( NAME = N'ELSUKET', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\ELSUKET.mdf' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'ELSUKET_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\ELSUKET_log.LDF' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 5MB) GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [ELSUKET].[dbo].[sp_fulltext_database] @action = 'enable' end GO ... ALTER DATABASE [ELSUKET] SET DB_CHAINING OFF GO |
ElSuket