Recreating Always On from an existing setup using SSMS AlwaysOn Wizard.

Note:

  • Delete all database and database files on secondary servers.
  • Make sure all drive and folder mapping are the same as primary server.
  • Use Local drive or NAS drive for AlwaysOn backup file location.
  • Make sure existing database backup jobs has been disabled.
  • Might have to wait a few minutes for the database to come online and become Synchronized.
  • Recommend creating the AlwaysOn manually for larger databases (>500 GB).

Creating Always On Manual

Primary Database Server

BACKUP DATABASE [MyDB] TO  DISK = N'C:\AlwaysOn\MyDB_FULL.bak' WITH NOFORMAT, NOINIT,  NAME = N'Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

BACKUP LOG [MyDB] TO  DISK = N'C:\AlwaysOn\MyDB_LOG.trn' WITH NOFORMAT, NOINIT,  NAME = N'Log Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

USE master 
GO
ALTER AVAILABILITY GROUP IFXRPT ADD DATABASE [MyDB]

Secondary Database Server

USE [master]

RESTORE DATABASE [MyDB] FROM  DISK = N'C:\AlwaysOn\MyDB_FULL.bak' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 5
GO

RESTORE LOG [MyDB] FROM  DISK = N'C:\AlwaysOn\MyDB_LOG.trn' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10
GO

USE master
GO 
ALTER DATABASE MyDB SET HADR AVAILABILITY GROUP = AO01;

Check Backup/Recovery Status

SELECT r.session_id AS [Session_Id]
	,r.command AS [command]
	,CONVERT(NUMERIC(6, 2), r.percent_complete) AS [% Complete]
	,GETDATE() AS [Current Time]
	,CONVERT(VARCHAR(20), DATEADD(ms, r.estimated_completion_time, GetDate()), 20) AS [Estimated Completion Time]
	,CONVERT(NUMERIC(32, 2), r.total_elapsed_time / 1000.0 / 60.0) AS [Elapsed Min]
	,CONVERT(NUMERIC(32, 2), r.estimated_completion_time / 1000.0 / 60.0) AS [Estimated Min]
	,CONVERT(NUMERIC(32, 2), r.estimated_completion_time / 1000.0 / 60.0 / 60.0) AS [Estimated Hours]
	,CONVERT(VARCHAR(1000), (
			SELECT SUBSTRING(TEXT, r.statement_start_offset / 2, CASE 
						WHEN r.statement_end_offset = - 1
							THEN 1000
						ELSE (r.statement_end_offset - r.statement_start_offset) / 2
						END) 'Statement text'
			FROM sys.dm_exec_sql_text(sql_handle)
			))
FROM sys.dm_exec_requests r
WHERE command like 'RESTORE%'
or	command like 'BACKUP%'
Last modified: May 7, 2024

Author

Comments

Write a Reply or Comment