SQL Server DMV Replication Monitoring Part 4


cloud-monitoring

Hello my followers  in the previous post i published part two in the series of (SQL Server DMV Replication Monitoring) and i explained very interested point for any DBA working on replication solutions by simple DMV depend on dynamic Query technique and on SQL Server cursor technology.

Summary of the previous posts

First Post :

  1. Publication Status
  2. Subscription Status
  3. Send Email by the Current status

Second Post :

  1. Replication information for the Complete setup.
  2. Find publication article.

Third Post :

How we can Check Distributor AGENT.

Replication in SQL Server Series  1 2 3 4 

DMV Replication Monitoring Series  1 2 3 4

Today i will Explain one new point it is very helpful and attractive , How we can Check LogReader AGENT Status

by the below Stored procedure we can Execute it from SQL Server AGENT to send to us notification mail if the LogReader JOB(s) FAILING OR STOPPED.

SOURCE POST : WWW.MostafaElmasry.WordPress.Com

[sql]

USE [MSDB]
GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

create procedure [dbo].[replLogReaderStatusGet] 
@pRecipients varchar(255) = 'SQLGULF-dbconsultant@outlook.com' 
AS 

 
 SET NOCOUNT ON; 
 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 
 
 DECLARE @is_sysadmin INT 
 DECLARE @job_owner sysname 
 DECLARE @job_id uniqueidentifier 
 DECLARE @job_name sysname 
 DECLARE @running int 
 DECLARE @cnt int 
 DECLARE @msg varchar(8000) 
 DECLARE @msg_header varchar(1000) 
 DECLARE @categoryid int 
 
 
select la.name,la.publisher_db, 
 case lh.runstatus 
 when 1 then 'Start' 
 when 2 then 'Succeed' 
 when 3 then 'In progress' 
 when 4 then 'Idle' 
 when 5 then 'Retry' 
 when 6 then 'Fail' 
 else 'Unknown' 
 end as runstatus 
 , lh.time, lh.comments 
from distribution..MSlogreader_history lh 
 inner join distribution..MSlogreader_agents la on lh.agent_id = la.id 
 inner join ( 
 select lh.agent_id, max(lh.time) as LastTime 
 from distribution..MSlogreader_history lh 
 inner join distribution..MSlogreader_agents la on lh.agent_id = la.id 
 group by lh.agent_id) r 
 on r.agent_id = lh.agent_id 
 and r.LastTime = lh.time 
where lh.runstatus not in (3,4) 
 
if @@rowcount > 0 
 
BEGIN 
 SELECT @job_owner = SUSER_SNAME() 
 ,@is_sysadmin = 1 
 ,@running = 0 
 ,@categoryid = 13 
 
 CREATE TABLE #job (job_id UNIQUEIDENTIFIER NOT NULL, 
 last_run_date INT , 
 last_run_time INT , 
 next_run_date INT , 
 next_run_time INT , 
 next_run_schedule_id INT , 
 requested_to_run INT , 
 request_source INT , 
 request_source_id sysname COLLATE database_default NULL, 
 running int , 
 current_step INT , 
 current_retry_attempt INT , 
 job_state INT) 
 
 INSERT INTO #job 
 EXECUTE master.dbo.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner 
 
 SELECT @running = isnull(sum(j.running),-1),@cnt = count(*) 
 FROM #job j 
 join msdb..sysjobs s on j.job_id = s.job_id 
 where category_id = @categoryid 
 
 if @running <> @cnt 
 BEGIN 
 SELECT @msg_header = 'LogReader job(s) FAILING OR STOPPED. Please check replication job(s) ASAP.' 
 SELECT @msg_header = @msg_header + char(10) 
 SELECT @msg_header = @msg_header + '**************************************************************' 

 set @msg = '' 
 SELECT @msg = @msg + char(10)+'"' + s.[name] + '" - '+ convert(varchar, isnull(j.running,-1)) 
 FROM #job j 
 join msdb..sysjobs s on j.job_id = s.job_id 
 where category_id = @categoryid 
 and isnull(j.running,-1) <> 1 
 
 SELECT @msg = @msg_header + char(10) + nullif(@msg,'') 
 

 exec msdb.dbo.sp_send_dbmail 
 @recipients= @pRecipients , 
 @subject= 'Production Replication LogReader Alert', 
 @body = @msg 
END 
END 
GO
[/sql]

Now create new SQL Server agent job and execute this Stored procedure on it

sql]
USE [msdb]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[replLogReaderStatusGet]
@pRecipients = N'SQLGULF-dbconsultant@outlook.com'
SELECT 'Return Value' = @return_value
GO
[/sql]

Follow me to know more SQL Server DMV in Replication Monitoring

Follow  the Author :

View all my tips , LinkedIn Website Slideshare ,Youtube Channel.

SQL Server DMV Replication Monitoring Part 3


cloud-monitoring

Hello my followers  in the previous post i published part two in the series of (SQL Server DMV Replication Monitoring) and i explained very interested point for any DBA working on replication solutions by simple DMV depend on dynamic Query technique and on SQL Server cursor technology.

Summary of the previous posts

First Post :

  1. Publication Status
  2. Subscription Status
  3. Send Email by the Current status

Second Post :

  1. Replication information for the Complete setup.
  2. Find publication article.

Replication in SQL Server Series  

1     2      3       4 

DMV Replication Monitoring Series  1  2  3

Today i will Explain one new point it is very helpful and attractive , How we can Check Distributor AGENT Status

by the below Stored procedure we can Execute it from SQL Server agent to send to us notification mail if the Distributor JOB(s) FAILING OR STOPPED.

[sql]

USE [MSDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[replDistributorStatusGet]
@pRecipients varchar(255) = 'SQLGULF-DBConsultant@outlook.com'
AS
begin
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
DECLARE @is_sysadmin INT
DECLARE @JOB_owner sysname
DECLARE @JOB_id uniqueidentifier
DECLARE @job_name sysname
DECLARE @running int
DECLARE @cnt int
DECLARE @msg varchar(8000)
DECLARE @msg_header varchar(4000)
DECLARE @categoryid int

SELECT @job_owner = SUSER_SNAME()
 ,@is_sysadmin = 1
 ,@running = 0
 ,@categoryid = 10

CREATE TABLE #jobStatus (job_id UNIQUEIDENTIFIER NOT NULL,
 last_run_date INT ,
 last_run_time INT ,
 next_run_date INT ,
 next_run_time INT ,
 next_run_schedule_id INT ,
 requested_to_run INT ,
 request_source INT ,
 request_source_id sysname COLLATE database_default NULL,
 running int ,
 current_step INT ,
 current_retry_attempt INT ,
 job_state INT)

INSERT INTO #jobStatus
 EXECUTE master.dbo.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner--, @job_id

--
select j.name, js.command, jss.running
from msdb.dbo.sysjobsteps js
 join msdb.dbo.sysjobs j on js.job_id = j.job_id
 join #jobStatus jss on js.job_id = jss.job_id
where step_id = 1 and subsystem = 'Distribution'
 and command like '%-Continuous'
 and jss.running <> 1
 if @@ROWCOUNT > 0
 BEGIN

 SELECT @msg_header = 'Distributor job(s) FAILING OR STOPPED. Please check replication job(s) ASAP.'
 SELECT @msg_header = @msg_header + char(10)
 SELECT @msg_header = @msg_header + 'Here is the list of Job(s) that are failing or stopped'
 SELECT @msg_header = @msg_header + char(10)
 SELECT @msg_header = @msg_header + '******************************************************************'

 set @msg = ''
 select @msg = @msg + CHAR(10) + j.name
 from msdb.dbo.sysjobsteps js
 join msdb.dbo.sysjobs j on js.job_id = j.job_id
 join #jobStatus jss on js.job_id = jss.job_id
 where step_id = 1 and subsystem = 'Distribution'
 and command like '%-Continuous'
 and jss.running <> 1

 SELECT @msg = @msg_header + char(10) + nullif(@msg,'')

 print @msg

 exec msdb.dbo.sp_send_dbmail
 @recipients= @pRecipients ,
 @subject= 'Production Replication Distributor Alert',
 @body = @msg
 END
drop table #jobStatus
end
GO

[/sql]

Now create new SQL Server agent job and execute this Stored procedure on it

[sql]

USE [msdb]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[replDistributorStatusGet]
 @pRecipients = N'SQLGULF-DBConsultant@outlook.com'
SELECT 'Return Value' = @return_value

GO

[/sql]

Follow me to know more SQL Server DMV in Replication Monitoring

Follow  the Author :

View all my tips , LinkedIn Website Slideshare ,Youtube Channel.

My First Arabic Post in SQL Server 2014


Hello my friends this my first Arabic post in SQL Server technology I do it in SQL Server 2014 it is about { Durable vs. Non-durable tables: In-Memory OLTP} ISA I will select the best posts on my library and I will translate it to Arabic Language
Arabic version: http://sqlserver-performance-tuning.net/?p=5653
English version: http://sqlserver-performance-tuning.net/?p=4553
Video : https://www.youtube.com/watch?v=e2m2gp1ECMk
this is not the end please follow me because i will publish more interested Posts in SQL Server 2014 by arabic and English also i will translate My videos to be arabic version so each video i will do it by two language (English and arabic )تكنولوجيا الجداول الدائمه والغير دائمه فى محرك قواعد البيانات مايكروسوفت 2014

SQL Server DMV Replication Monitoring Part 2


cloud-monitoring

 

Hello my followers  in the previous post i started my new series in (SQL Server DMV Replication Monitoring) and i explained very interested point for any DBA WORKING on replication solutions How we can know the current status of our Publication and subscription is it Active , In Active by simple DMV depend on dynamic Query technique and on SQL Server cursor TECHNOLOGY .

 

Summary of the previous post:
1- Publication Status
2- Subscription Status
3- Send Email by the Current status

 Replication in SQL Server Series  

1     2      3       4 

DMV Replication Monitoring Series  1     2

Today is  will complete this series to be this part is part two and i will add 2 new point very helpful for our daily WORK :

  • Replication information for the Complete setup.
  • Find publication article.

Continue reading “SQL Server DMV Replication Monitoring Part 2”

Durable vs. Non-durable tables: In-Memory OLTP


Hello followers Today i will explain very important point Durable vs. Non-durable tables SQL Server 2014 when come for us with In-Memory  Feature come with 2 Kind of tables Durable and Non-durable tables The default one is Durable Table. One cool feature besides the durable in-memory tables, is the possibility to create non-durable in-memory tables. As you realize, you can get a lot of performance improvement with the in-memory solution, but what is the benefit with non-durable tables as the data will be lost in case of failure? Well, one option is to use non-durable in-memory tables as staging tables in your ETL solution as you don’t care about the staging data in case of a system crash. do you have Temporary data ? do you have data you are OK to lose the data due to SQL Server restart at this time you can think in Non-durable tables, 

Memory-Optimized-Table come with two options (DURABILITY = SCHEMA_AND_DATA) , (DURABILITY = SCHEMA_ONLY)

Durable Table          : DURABILITY = SCHEMA_AND_DATA

Non-durable tables :DURABILITY = SCHEMA_ONLY

Complete the post to know more about the Scripts used in the DEMO

Continue reading “Durable vs. Non-durable tables: In-Memory OLTP”