Testing Database Mirroring.
After we succeeded configure Database Mirroring with High Availability Mode, Right now we try to test Database Mirroring with inserted data. Here is test scenario:
- Create new table to inserted data.
- Populate table with inserting data.
- View data table in Principal Database.
- Failover Database Mirroring.
- View data table in Mirror Database.
Create new table to inserted data.
IF EXISTS(select TOP 1 1 From sys.sysobjects Where id=OBJECT_ID(‘DimCustomer_Trans’) and xtype=’U’)
BEGIN
Drop Table DimDates
END
GO
CREATE TABLE [dbo].[DimCustomer_Trans](
[CustomerKey] [int] IDENTITY(1,1) NOT NULL,
[GeographyKey] [int] NULL,
[CustomerAlternateKey] [nvarchar](15) NOT NULL,
[Title] [nvarchar](8) NULL,
[FirstName] [nvarchar](50) NULL,
[MiddleName] [nvarchar](50) NULL,
[LastName] [nvarchar](50) NULL,
[NameStyle] [bit] NULL,
[BirthDate] [date] NULL,
[MaritalStatus] [nchar](1) NULL,
[Suffix] [nvarchar](10) NULL,
[Gender] [nvarchar](1) NULL,
[EmailAddress] [nvarchar](50) NULL,
[YearlyIncome] [money] NULL,
[TotalChildren] [tinyint] NULL,
[NumberChildrenAtHome] [tinyint] NULL,
[EnglishEducation] [nvarchar](40) NULL,
[SpanishEducation] [nvarchar](40) NULL,
[FrenchEducation] [nvarchar](40) NULL,
[EnglishOccupation] [nvarchar](100) NULL,
[SpanishOccupation] [nvarchar](100) NULL,
[FrenchOccupation] [nvarchar](100) NULL,
[HouseOwnerFlag] [nchar](1) NULL,
[NumberCarsOwned] [tinyint] NULL,
[AddressLine1] [nvarchar](120) NULL,
[AddressLine2] [nvarchar](120) NULL,
[Phone] [nvarchar](20) NULL,
[DateFirstPurchase] [date] NULL,
[CommuteDistance] [nvarchar](15) NULL,
CONSTRAINT [PK_DimCustomer_Trans] PRIMARY KEY CLUSTERED
(
[CustomerKey] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
Populate table with inserting data.
SET NOCOUNT ON
DECLARE @CustomerKey int
DECLARE @Message char(300)
DECLARE @Loopint int
SET @Loopint=1
WHILE @Loopint<=10 –Loop condition
BEGIN
PRINT ‘——– Insert DimCustomer_Trans Step ‘ + cast(@Loopint as char(1)) + ‘——–‘
DECLARE Customer_Cursor CURSOR FOR
select Distinct CustomerKey From DimCustomer Order by CustomerKey
OPEN Customer_Cursor
FETCH NEXT FROM Customer_Cursor
INTO @CustomerKey
WHILE @@FETCH_STATUS = 0
BEGIN
Begin Transaction
INSERT INTO dbo.DimCustomer_Trans
(GeographyKey,CustomerAlternateKey,Title,FirstName
,MiddleName,LastName,NameStyle,BirthDate,MaritalStatus
,Suffix,Gender,EmailAddress,YearlyIncome,TotalChildren
,NumberChildrenAtHome,EnglishEducation,SpanishEducation
,FrenchEducation,EnglishOccupation,SpanishOccupation
,FrenchOccupation,HouseOwnerFlag,NumberCarsOwned ,AddressLine1,AddressLine2,Phone,DateFirstPurchase,CommuteDistance)
Select GeographyKey,CustomerAlternateKey,Title,FirstName
,MiddleName,LastName,NameStyle,BirthDate,MaritalStatus
,Suffix,Gender,EmailAddress,YearlyIncome,TotalChildren
,NumberChildrenAtHome,EnglishEducation,SpanishEducation
,FrenchEducation,EnglishOccupation,SpanishOccupation
,FrenchOccupation,HouseOwnerFlag,NumberCarsOwned ,AddressLine1,AddressLine2,Phone,DateFirstPurchase,CommuteDistance
From dbo.DimCustomer
Where CustomerKey=@CustomerKey
Order by CustomerKey asc
Commit Transaction
FETCH NEXT FROM Customer_Cursor
INTO @CustomerKey
END
CLOSE Customer_Cursor
DEALLOCATE Customer_Cursor
IF @Loopint>10
Break
ELSE
SET @Loopint=@Loopint+1
Continue
END
Monitoring Transaction on Database Mirroring.
During transaction query run we can monitor transaction on database we have mirrored. For monitoring transaction Right click on database we have mirrored and select Task | Launch Database Mirroring Monitor.
Principal Database Monitoring
Mirror Database Monitoring
View data table in Principal Server.
After we succeeded populate data in table DimCustomer_Trans, let’s we connect to Principal Server transaction query finished. As we can see table fill with 184.840 Row.
Failover Database Mirroring.
Now we try to failover database mirroring and try to see changes on database during failover process, failover mirroring it’s to make sure data inserted on Principal database has been inserted too on Mirror database. For failover database mirroring use the following query.
ALTER DATABASE AdventureWorksDW
SET SAFETY ON
GO
WAITFOR DELAY ’00:00:30′;
View data table in Mirror Server.
After we succeeded Failover Database Mirroring, let’s we connect to Mirror Server and from Object Explorer we can see new table created named DimCustomer_Trans and table fill with 184.840 Row.
Before Failover
After Failover