In 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





















Tags
