MSSQL 2016 Attach en database med TSQL Script

Jeg har en del databaser som skal attaches, og efterfølgende skal der udføres 2 ændringer på databasen.

For at være sikker på at jeg husker at tag ændringerne med, har jeg lavet nedenstående SQL Script som gør følgende:

  1. Attacher Databasen med Database navn.
  2. Jeg har Separeret MDF (H:) og LDF (E:) filen. Mappenavn kan defineres i DBFOLDER.
  3. MDF og LDF Filnavn skal angives.
  4. Efter attach skal scriptet køre: SET CONTAINMENT = PARTIAL WITH NO_WAIT
  5. Efter attach skal scriptet køre: SET COMPATIBILITY_LEVEL = 130;

Punkt 4 + 5 kan du ændre til det du ønsker at køre.

DECLARE @DBNAME VARCHAR(255)
DECLARE @DBFOLDER VARCHAR(255)
DECLARE @MDFNAME VARCHAR(255)
DECLARE @LDFNAME VARCHAR(255)

--- Skift Database oplysninger her ------------
SET @DBNAME = 'UsmanDB'
SET @DBFOLDER = 'UsmanDBMappe'
SET @MDFNAME = 'UsmanData'
SET @LDFNAME = 'UsmanLog'
------------------------------------------

DECLARE @Create_Database VARCHAR(MAX)
DECLARE @Alter1 VARCHAR(MAX)
DECLARE @Alter2 VARCHAR(MAX)
SET @Create_Database = 'CREATE DATABASE {DBNAME}
ON (FILENAME = "H:\MSSQL13.DB02\MSSQL\Data\{DBFOLDER}\' + @MDFNAME + '.mdf"),
(FILENAME = "E:\MSSQL13.DB02\MSSQL\Data\{DBFOLDER}\' + @LDFNAME + '.ldf")
FOR ATTACH; '
SET @Create_Database = REPLACE(@Create_Database, '{DBNAME}', @DBNAME)
SET @Create_Database = REPLACE(@Create_Database, '{DBFOLDER}', @DBFOLDER)
SET @Alter1 ='ALTER DATABASE {DBNAME} SET CONTAINMENT = PARTIAL WITH NO_WAIT'
SET @Alter2 ='ALTER DATABASE {DBNAME} SET COMPATIBILITY_LEVEL = 130;'
DECLARE @Executejob VARCHAR(MAX)
SET @Executejob = @Create_Database
EXECUTE (@Executejob)
SET @Executejob = REPLACE(@Alter1, '{DBNAME}', @DBNAME)
EXECUTE (@Executejob)
SET @Executejob = REPLACE(@Alter2, '{DBNAME}', @DBNAME)
EXECUTE (@Executejob)

 

Hvis du ønsker at ændre MDF og LDF Path/Stien, så skal dette tilpasses:

ON (FILENAME = "H:\MSSQL13.DB02\MSSQL\Data\{DBFOLDER}\' + @MDFNAME + '.mdf"),
(FILENAME = "E:\MSSQL13.DB02\MSSQL\Data\{DBFOLDER}\' + @LDFNAME + '.ldf")

 

 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *