• Increase font size
  • Default font size
  • Decrease font size
Home T-SQL Script alle databases en objecten

Script alle databases en objecten

E-mail Afdrukken
(0 stemmen)

file_sharing_up_128In navolging op een voorgaand artikel over het scripten van je databaseobjecten heb ik een stored procedure gemaakt die automatisch alle databases voor je scripts en het script wegschrijft naar een folder. Dit script is gemaakt in SQL Server 2005. Dit is handig omdat je nu alle objecten zoals tabellen, stored procedures, views en functies in een script hebt.

CREATE PROCEDURE [dbo].[sp_GenDBscript]
 @BackupPath VARCHAR(150) -- Bijv: 'D:\SQLDATA\'
AS 
 
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SPC Purpose:            Genereert een script van databases, alle objecten
Created By:             Ronald Kraijesteijn
Created:                Maart 2010
Updated:                X
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nodig:
http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=56e5b1c5-bf17-42e0-a410-371a838e570a&displayLang=en
 
Example
EXEC sp_GenDBscript 'D:\SQLDATA'
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 
 BEGIN
 SET NOCOUNT ON
 
 DECLARE @PATH AS VARCHAR(150)
 DECLARE @CMD AS VARCHAR(150)
 DECLARE @Param AS VARCHAR(150)
 DECLARE @SQL AS VARCHAR(256)
 DECLARE @DATE AS VARCHAR(10)
 DECLARE @TextFile AS VARCHAR(150)
 DECLARE @MkdirStr AS VARCHAR(150)
 DECLARE @TIME AS VARCHAR(150)
 DECLARE @DATABASE AS VARCHAR(150)
 DECLARE @RC AS INT        
 
 SET @TIME = REPLACE(CONVERT(VARCHAR, GETDATE(), 114), ':', '')
 SET @DATE = CONVERT(VARCHAR, GETDATE(), 112)
 SET @PATH = '"C:\Program Files\Microsoft SQL Server\90\Tools\Publishing\SqlPubWiz.exe"'
 
-- GET LIST OF DATABASES        
 DECLARE CUR_DB CURSOR
 FOR SELECT  [name]
 FROM    sys.databases
 WHERE   [name] NOT IN ( 'master', 'tempdb', 'model', 'msdb',
 'ReportServer', 'ReportServerTempDB' )
 
-- CREATE SCRIPT OF EACH DATABASE
 OPEN CUR_DB
 FETCH CUR_DB INTO @DATABASE
 WHILE @@FETCH_STATUS = 0
 BEGIN                            
 SET @MkdirStr = 'mkdir ' + @BackupPath + '\' + @Database + '\script' 
 SET @TextFile = @Database + '_' + @Date + '_' + @Time + '.SQL'
 SET @Param = ' script ' + @BackupPath + '\' + @Database + '\script\' + @TextFile
 + ' -schemaonly -d ' + @Database 
 SET @SQL = @Path + @Param 
 
 -- CHECK IF DIR EXIST, IF NOT, CREATE DIR                
 EXEC @RC = master.dbo.xp_cmdshell @MkdirStr, NO_OUTPUT
 
 -- Maak backup
 RAISERROR ('## START scripting DATABASE: %s ##', 10, 0, @Database ) WITH NOWAIT ;                            
 EXEC @RC = master..xp_cmdshell @SQL, no_output
 IF @RC <> 0
 PRINT 'An Error occured WHILE scripting DATABASE: ' + @Database
 
 RAISERROR ('## Done scripting DATABASE: %s ##', 10, 0, @Database ) WITH NOWAIT ;
 FETCH CUR_DB INTO @Database
 END
 CLOSE CUR_DB
 DEALLOCATE CUR_DB     
 
 END







 

Copyright 2008. All Rights Reserved.

Trackback(0)

TrackBack URI voor deze post

Commentaar (0)

RSS feed Commentaar

Schrijf commentaar

kleiner | groter
security image
Schrijf de volgende tekens

busy