From 14989cc977dbe622eed0f554f531e693da213401 Mon Sep 17 00:00:00 2001 From: Thierry Schork Date: Fri, 12 Apr 2024 08:41:03 +0200 Subject: [PATCH] handling data and log destination Added exception to the destination of data files for 2 machines --- DELPHIX - create target db.sql | 66 ++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/DELPHIX - create target db.sql b/DELPHIX - create target db.sql index e3a123b..6c6e995 100644 --- a/DELPHIX - create target db.sql +++ b/DELPHIX - create target db.sql @@ -38,6 +38,35 @@ BEGIN CATCH END CATCH '; +Declare @DataDir nvarchar(4000), + @LogDir nvarchar(4000), + @BakDir nvarchar(4000), + @FTDir nvarchar(4000) + +Exec xp_instance_regread N'HKEY_LOCAL_MACHINE', + N'Software\Microsoft\MSSQLServer\MSSQLServer', + N'DefaultData', + @DataDir output, + 'no_output' + +Exec xp_instance_regread N'HKEY_LOCAL_MACHINE', + N'Software\Microsoft\MSSQLServer\MSSQLServer', + N'DefaultLog', + @LogDir output, + 'no_output' + +Exec xp_instance_regread N'HKEY_LOCAL_MACHINE', + N'Software\Microsoft\MSSQLServer\MSSQLServer', + N'BackupDirectory', + @BakDir output, + 'no_output' + +Exec xp_instance_regread N'HKEY_LOCAL_MACHINE', + N'Software\Microsoft\MSSQLServer\MSSQLServer', + N'FullTextDefaultPath', + @FTDir output, + 'no_output' + DECLARE csrDb CURSOR FAST_FORWARD READ_ONLY FOR SELECT [d].[name] FROM sys.databases d @@ -60,9 +89,17 @@ BEGIN RAISERROR ('No dump device named %s exists', 16, 1, @dump); END ELSE + IF @@SERVERNAME IN ('SWAMA707VM01\APSSQL','SWSUN004VM01\APSSQL') + BEGIN + SET @dump = replace('DISK = N''g:\@dbName@.bak''','@dbName@',@dbname); + END + ELSE + BEGIN + SET @dump = '['+@dbName+'_dump]'; + END BEGIN SET @query_bkp = @query_bkp + REPLACE(REPLACE(' -BACKUP DATABASE [@dbname@] TO [@dump@] WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N''@dbname@-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10; +BACKUP DATABASE [@dbname@] TO @dump@ WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = N''@dbname@-Full Database Backup'', COMPRESSION, SKIP, NOREWIND, NOUNLOAD, STATS = 10; ' ,'@dbname@' ,@dbName) @@ -84,8 +121,14 @@ BACKUP DATABASE [@dbname@] TO [@dump@] WITH COPY_ONLY, NOFORMAT, NOINIT, NAME = WHERE DB_NAME([F].[database_id]) = @dbName AND type_desc = 'LOG' - SET @query_rest = @query_rest +REPLACE(REPLACE(REPLACE(REPLACE(' -RESTORE DATABASE [@dbname@_delphix] FROM [@dump@] WITH FILE = 1, REPLACE, MOVE N''@file_row@'' TO N''F:\SQLDataBase\@dbname@_delphix.mdf'', MOVE N''@file_Log@'' TO N''G:\SQLDataBase\@dbname@_delphix_1.ldf'', NOUNLOAD, STATS = 5; + IF @@SERVERNAME IN ('SWTSTDB01\APSSQL') + BEGIN + SET @dataDir = 'e:\SQLDatabase\'; + END + + SET @query_rest = @query_rest +REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(' +RESTORE DATABASE [@dbname@_delphix] FROM @dump@ WITH FILE = 1, REPLACE, MOVE N''@file_row@'' TO N''@dataDir@\@dbname@_delphix.mdf'', MOVE N''@file_Log@'' TO N''@logDir@\@dbname@_delphix_1.ldf'', NOUNLOAD, STATS = 5; +ALTER DATABASE [@dbname@_delphix] SET RECOVERY SIMPLE WITH ROLLBACK IMMEDIATE; ' ,'@dbname@' ,@dbName) @@ -98,7 +141,16 @@ RESTORE DATABASE [@dbname@_delphix] FROM [@dump@] WITH FILE = 1, REPLACE, MOVE ,'@file_row@' ,@file_row - ); + ) + + ,'@dataDir@' + ,@dataDir + ) + + ,'@logDir@' + ,@logDir + ) + ; --permissions SELECT @query_perms = @query_perms + REPLACE(REPLACE( @@ -120,9 +172,9 @@ CLOSE csrDb; DEALLOCATE csrDb; ---PRINT @query_bkp; ---PRINT '--------------------------------' ---PRINT @query_rest +PRINT @query_bkp; +PRINT '--------------------------------' +PRINT @query_rest --PRINT '--------------------------------' --PRINT @query_perms