Advertisement
Guest User

Untitled

a guest
Jan 13th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. USE [DBAUtility]
  2. GO
  3.  
  4. /****** Object: StoredProcedure [dbo].[RestoreYourDB_FE] Script Date: 1/13/2017 2:47:22 PM ******/
  5. SET ANSI_NULLS ON
  6. GO
  7.  
  8. SET QUOTED_IDENTIFIER ON
  9. GO
  10.  
  11.  
  12. CREATE PROCEDURE [dbo].[RestoreYourDB_FE]
  13.  
  14. /*
  15. EXECUTE [DBAUtility].[dbo].[RestoreYourDB_FE] 'DEV1_FE', 'DEV1'
  16. */
  17.  
  18. @DatabaseNameToBeRestored varchar(100),
  19. @UserName varchar(50)
  20.  
  21. AS
  22. BEGIN
  23.  
  24. IF (ISNULL(@DatabaseNameToBeRestored, '') = '')
  25. BEGIN
  26. RAISERROR('Missing target database name: @DatabaseNameToBeRestored cannot be NULL or empty', 18, 0)
  27. RETURN
  28. END
  29.  
  30. IF (ISNULL(@DatabaseNameToBeRestored, '') = '')
  31. BEGIN
  32. RAISERROR('Missing Login Name: @UserName cannot be NULL or empty', 18, 0)
  33. RETURN
  34. END
  35.  
  36. --DECLARE @DBName_UserLogin_and_Password NVARCHAR(100); --These should be the same: Database name, Login name and password.
  37. DECLARE @SINGLE_USER NVARCHAR(100);
  38. DECLARE @MULTI_USER NVARCHAR(100);
  39. DECLARE @RESTORE_DATEABASE NVARCHAR(1000);
  40.  
  41. --SET @DBName_UserLogin_and_Password = @DatabaseNameToBeRestored
  42.  
  43. IF db_id(@DatabaseNameToBeRestored) IS NOT NULL
  44. SET @SINGLE_USER = 'ALTER DATABASE [' + @DatabaseNameToBeRestored + '] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;'
  45.  
  46.  
  47.  
  48. SET @RESTORE_DATEABASE = 'RESTORE DATABASE [' + @DatabaseNameToBeRestored + '] FROM DISK = N''E:\Backups\FE_KW_PROD_SID_PRUNED.bak'' WITH FILE = 1, ' +
  49. 'MOVE N''KW-PROD-SID'' TO N''E:\sqldata\' + @DatabaseNameToBeRestored + '.mdf'', ' +
  50. 'MOVE N''KW-PROD-INDEX'' TO N''E:\sqldata\' + @DatabaseNameToBeRestored + '_1.ndf'', ' +
  51. 'MOVE N''Gen3File'' TO N''E:\sqldata\' + @DatabaseNameToBeRestored + '_2.ndf'', ' +
  52. 'MOVE N''KW-PROD-SID_log'' TO N''E:\sqllog\' + @DatabaseNameToBeRestored + '_log.ldf'', ' +
  53. 'NOUNLOAD, ' +
  54. 'REPLACE, ' +
  55. 'STATS = 5;'
  56.  
  57.  
  58. SET @MULTI_USER = 'ALTER DATABASE [' + @DatabaseNameToBeRestored + '] SET MULTI_USER;'
  59.  
  60. PRINT 'Set ' + @DatabaseNameToBeRestored + ' to single user mode'
  61. EXEC (@SINGLE_USER);
  62.  
  63. PRINT 'Restore ' + @DatabaseNameToBeRestored
  64. EXEC (@RESTORE_DATEABASE);
  65.  
  66. PRINT 'Set ' + @DatabaseNameToBeRestored + ' to multi user mode'
  67. EXEC (@MULTI_USER);
  68.  
  69. --Recreate accounts if needed
  70. PRINT 'If needed recreate accounts for octopus and ' + @UserName
  71.  
  72. --Octopus
  73.  
  74. DECLARE @SQL nvarchar(500);
  75.  
  76. --SQL Server Login: Check if it exists, if not create it.
  77. IF NOT EXISTS(SELECT principal_id FROM sys.server_principals WHERE name = 'octopus')
  78. BEGIN
  79. SET @SQL = 'CREATE LOGIN octopus WITH PASSWORD = ''octopus'''
  80. EXECUTE SP_EXECUTESQL @SQL
  81. END
  82.  
  83. ----Database User: Check if it exists, if not create it.
  84. IF NOT EXISTS(SELECT principal_id FROM sys.database_principals WHERE name = 'octopus')
  85. BEGIN
  86. SET @SQL = 'CREATE USER octopus FOR LOGIN octopus'
  87. EXECUTE (@SQL)
  88. END
  89.  
  90. ----Turn off expiration and policy.
  91. SET @SQL = 'ALTER LOGIN [octopus] WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'
  92. EXECUTE SP_EXECUTESQL @SQL
  93.  
  94. ----Let access objects in db
  95. SET @SQL = 'ALTER ROLE [db_owner] ADD MEMBER [octopus]'
  96. EXECUTE SP_EXECUTESQL @SQL
  97.  
  98. --Database that was restored
  99.  
  100. --SQL Server Login: Check if it exists, if not create it.
  101. IF NOT EXISTS(SELECT principal_id FROM sys.server_principals WHERE name = @UserName)
  102. BEGIN
  103. --SET @SQL = 'CREATE LOGIN ' + @DBName_UserLogin_and_Password + ' WITH PASSWORD = ''' + @DBName_UserLogin_and_Password + ''''
  104. EXEC ('USE MASTER')
  105. SET @SQL = 'CREATE LOGIN ' + quotename(@UserName) + ' WITH PASSWORD = ' + quotename(@UserName, '''')
  106. EXECUTE SP_EXECUTESQL @SQL
  107.  
  108. END
  109.  
  110. EXEC master..sp_addsrvrolemember @loginame = @UserName, @rolename = N'sysadmin'
  111.  
  112. --Turn off expiration and policy.
  113. EXEC ('USE MASTER')
  114. SET @SQL = 'ALTER LOGIN ' + @UserName + ' WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF'
  115. EXECUTE SP_EXECUTESQL @SQL
  116.  
  117. PRINT 'Finished Restoring ' + @DatabaseNameToBeRestored
  118.  
  119. END
  120. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement