Database Research & Development

  • Home
  • NoSQL
    • NoSQL
    • Cassandra
  • Databases
    • Database Theory
    • Database Designing
    • SQL Server Coding Standards
    • SQL Server
    • PostgreSQL
    • MySQL
    • Greenplum
    • Linux
  • Interviews
    • SQL Server Interviews
    • MySQL Interviews
    • SQL Puzzles
  • DBA Scripts
    • SQL Server DBA Scripts
    • PostgreSQL DBA Scripts
    • MySQL DBA Scripts
    • Greenplum DBA Scripts
  • Home
  • Blog Archives !
  • (: Laugh@dbrnd :)
  • Contact Me !
sqlserverinterviews
Home 2019 January SQL Server: Auto Generate Database Detach and Attach Scripts

SQL Server: Auto Generate Database Detach and Attach Scripts

This article is half-done without your Comment! *** Please share your thoughts via Comment ***

In this post, I am sharing two different scripts to populate attach and detach scripts for all your SQL Server Databases.

When we are migrating our SQL Database Server, we require to move all databases from one server to another server.

If you have a big number of databases, making of individual attach and detach script will take more time.

I have also added script to change database access mode like: Multi_User to Single_User for Detach Process and Single_User to Multi_User for Attach Process.

If your database is in use, you may require to change the database access mode to close all running connections.

Using this script you can populate attach and detach scripts for all databases.
Execute this script to generate detach scripts for all databases:

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
DECLARE @DatabaseName AS VARCHAR(255)
DECLARE CurDetach CURSOR FOR
SELECT name
FROM MASTER.sys.databases
WHERE owner_sid > 1;
 
OPEN CurDetach
FETCH Next FROM CurDetach INTO @DatabaseName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT
'ALTER DATABASE ' + @DatabaseName + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'
+ CHAR(10) + ' GO' + CHAR(10) +
'sp_detach_db ' + @DatabaseName + CHAR(10)
+ ' GO' + CHAR(10) + 'Print ''Detach of '
+ @DatabaseName
+ ' database completed successfully'''
+ CHAR(10) + ' GO'
 
FETCH NEXT FROM CurDetach INTO @DatabaseName
END
 
CLOSE CurDetach
DEALLOCATE CurDetach

Execute this script to generate attach scripts for all databases:
You can change your file name or file path using @Filepath variable.

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
DECLARE @DatabaseName AS VARCHAR(255)
DECLARE @Filepath AS VARCHAR(255)
 
SET @Filepath = 'C:\SQLDATA\'
 
DECLARE CurAttach CURSOR FOR
SELECT name
FROM MASTER.sys.databases
WHERE owner_sid > 1;
 
OPEN CurAttach
FETCH Next FROM CurAttach INTO @DatabaseName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT
'CREATE DATABASE ' + @DatabaseName + ' ON
(FILENAME = '+ @Filepath + @DatabaseName +'.mdf)
,(FILENAME = '+ @Filepath + @DatabaseName +'.ldf)
FOR ATTACH
GO
 
ALTER DATABASE '+ @DatabaseName +' SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO'
FETCH NEXT FROM CurAttach INTO @DatabaseName
END
 
CLOSE CurAttach
DEALLOCATE CurAttach

Jan 28, 2019Anvesh Patel
SQL Server: Script to find a list of Weekends between two DatesDatabase Design: Please do not use DISTINCT

Leave a Reply Cancel reply

CAPTCHA
Refresh

*

Anvesh Patel
Anvesh Patel

Database Engineer

January 28, 2019 SQL Server, SQL Server DBA ScriptAnvesh Patel, attach, data migration, database, database research and development, dbrnd, detach, multi_user, single_user, SQL Query, SQL Server, SQL Server Administrator, SQL Server Monitoring, SQL Server Performance Tunning, SQL Server Tips and Tricks, TSQL
About Me!

I'm Anvesh Patel, a Database Engineer certified by Oracle and IBM. I'm working as a Database Architect, Database Optimizer, Database Administrator, Database Developer. Providing the best articles and solutions for different problems in the best manner through my blogs is my passion. I have more than six years of experience with various RDBMS products like MSSQL Server, PostgreSQL, MySQL, Greenplum and currently learning and doing research on BIGData and NoSQL technology. -- Hyderabad, India.

About DBRND !

dbrnd

This is a personal blog (www.dbrnd.com).

Any views or opinions represented in this blog are personal and belong solely to the blog owner and do not represent those of people, institutions or organizations that the owner may or may not be associated with in professional or personal capacity, unless explicitly stated.

Feel free to challenge me, disagree with me, or tell me I’m completely nuts in the comments section of each blog entry, but I reserve the right to delete any comment for any reason whatsoever (abusive, profane, rude, or anonymous comments) - so keep it polite.

The content of this website is protected by copyright. No portion of this website may be copied or replicated in any form without the written consent of the website owner.

Recent Comments !
  • Anvesh Patel { Sure will do... } – May 27, 12:43 PM
  • Anvesh Patel { Great... } – May 27, 12:41 PM
  • Anvesh Patel { Great... } – May 27, 12:39 PM
  • Anvesh Patel { Great... } – May 27, 12:36 PM
  • Anvesh Patel { Great... } – May 27, 12:28 PM
  • Anvesh Patel { Great... } – May 27, 12:27 PM
  • Anvesh Patel { Great... } – May 27, 12:16 PM
  • Older »
Follow Me !
  • facebook
  • linkedin
  • twitter
  • youtube
  • google
  • flickr
© 2015 – 2019 All rights reserved. Database Research & Development (dbrnd.com)
Posting....