Générer le script complet des objets d’une base de données

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

Laisser un commentaire