Netsis VB Script tablosunu kontrol etmek

Merhabalar ;

Bu gün  Netsis Üzerindeki  VBScripts tablosundaki değişiklikleri kontrol etmek için kendimize bir kurgu yapıp bunu devreye alacağız.

Sistem Üzerinden herhangi bir değişiklik anında bize mail ile haber vermesini Sağlıyacağız.

 

Öncelikle TRİGGER yazmıyacağız.Sebebi ise   SCRPİT kolonun türünün text olmasından dolayı ,

İlk işlemimiz  paralel bir tablo oluşturmak.

 

 

CREATE TABLE [dbo].[NETSISSCRIPT](
[ID] [int] IDENTITY(1,1) NOT NULL,
[RECID] [int] NOT NULL,
[NETSISURUNNO] [int] NOT NULL,
[FORMADI] [varchar](200) NOT NULL,
[NESNEADI] [varchar](200) NOT NULL,
[EVENTADI] [varchar](200) NULL,
[SCRIPTKOD] [nvarchar](max) NULL,
[KAYITYAPANKUL] [varchar](50) NULL,
[KAYITTARIHI] [datetime] NULL,
[DUZELTMEYAPANKUL] [varchar](50) NULL,
[DUZELTMETARIHI] [datetime] NULL,
[S_YEDEK1] [varchar](50) NULL,
[S_YEDEK2] [varchar](50) NULL,
[F_YEDEK1] [float] NULL,
[F_YEDEK2] [float] NULL,
[C_YEDEK1] [char](1) NULL,
[C_YEDEK2] [char](1) NULL,
[I_YEDEK1] [smallint] NULL,
[I_YEDEK2] [smallint] NULL,
[D_YEDEK1] [datetime] NULL,
[D_YEDEK2] [datetime] NULL,
[KAYIT_ZAMAN] [datetime] NULL,
[GUID] [uniqueidentifier] NULL,
CONSTRAINT [PK_NETSISSCRIPT] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Bir prosedür ile hem kaydetme ve kontrol kurgusunu oluşturacağız.

 

CREATE PROCEDURE [dbo].[SP_SCRIPT_AKTAR]

AS

BEGIN

DECLARE @ID UNIQUEIDENTIFIER;
DECLARE @GUID UNIQUEIDENTIFIER;
DECLARE @ORJINAL SMALLINT;
DECLARE @YEDEK SMALLINT;

SET @ID = NEWID()

SELECT @ORJINAL = COUNT(*) FROM NETSIS.dbo.NETSISSCRIPT

SELECT @GUID = GUID FROM NETSISSCRIPT WHERE ID = (

SELECT MAX(ID) FROM NETSISSCRIPT )

SELECT @YEDEK = COUNT(GUID) FROM NETSISSCRIPT WHERE GUID = @GUID

IF @YEDEK <> @ORJINAL BEGIN

DECLARE @Body NVARCHAR(MAX),
@TableHead VARCHAR(1000),
@TableTail VARCHAR(1000)

SET @TableTail = ‘</table></body></html>’ ;
SET @TableHead = ‘<html><head>’ + ‘<style>’
+ ‘td {border: solid black;border-width: 1px;padding-left:5px;padding-right:5px;padding-top:1px;padding-bottom:1px;font: 11px arial} ‘
+ ‘</style>’ + ‘</head>’ + ‘<body>’ + ‘Sayın Yetkili : Raporunuzun oluşturma Tarihi : ‘
+ CONVERT(VARCHAR(50), GETDATE(), 104)
+ ‘ <br>
<br>
<table cellpadding=0 cellspacing=0 border=0>’
+ ‘<tr> <td bgcolor=#E6E6FA><b>Orjınal</b></td>’
+ ‘<td bgcolor=#E6E6FA><b>Yedek</b></td>

</tr>’ ;

SET @Body = ( SELECT @ORJINAL AS ‘td’,@YEDEK AS ‘td’

FOR XML RAW(‘tr’),
ELEMENTS

)

SELECT @Body = @TableHead + ISNULL(@Body, ”) + @TableTail

EXEC msdb.dbo.sp_send_dbmail
@profile_name = ‘sqlmailprofile’,
@body = @Body,
@body_format =’HTML’,
@recipients = ‘MAİL BİLGİSİ’,
@subject = ‘Script kontrol’ ;

INSERT INTO NETSISSCRIPT (RECID, NETSISURUNNO, FORMADI, NESNEADI, EVENTADI, SCRIPTKOD, KAYITYAPANKUL, KAYITTARIHI, DUZELTMEYAPANKUL, DUZELTMETARIHI, S_YEDEK1, S_YEDEK2, F_YEDEK1, F_YEDEK2, C_YEDEK1, C_YEDEK2, I_YEDEK1, I_YEDEK2, D_YEDEK1, D_YEDEK2, KAYIT_ZAMAN, GUID)

(

SELECT RECID
,NETSISURUNNO
,FORMADI
,NESNEADI
,EVENTADI
,SCRIPTKOD
,KAYITYAPANKUL
,KAYITTARIHI
,DUZELTMEYAPANKUL
,DUZELTMETARIHI
,S_YEDEK1
,S_YEDEK2
,F_YEDEK1
,F_YEDEK2
,C_YEDEK1
,C_YEDEK2
,I_YEDEK1
,I_YEDEK2
,D_YEDEK1
,D_YEDEK2,GETDATE(),@ID FROM NETSIS.dbo.NETSISSCRIPT
)

END
ELSE

BEGIN

INSERT INTO NETSISSCRIPT (RECID, NETSISURUNNO, FORMADI, NESNEADI, EVENTADI, SCRIPTKOD, KAYITYAPANKUL, KAYITTARIHI, DUZELTMEYAPANKUL, DUZELTMETARIHI, S_YEDEK1, S_YEDEK2, F_YEDEK1, F_YEDEK2, C_YEDEK1, C_YEDEK2, I_YEDEK1, I_YEDEK2, D_YEDEK1, D_YEDEK2, KAYIT_ZAMAN, GUID)

(

SELECT RECID
,NETSISURUNNO
,FORMADI
,NESNEADI
,EVENTADI
,SCRIPTKOD
,KAYITYAPANKUL
,KAYITTARIHI
,DUZELTMEYAPANKUL
,DUZELTMETARIHI
,S_YEDEK1
,S_YEDEK2
,F_YEDEK1
,F_YEDEK2
,C_YEDEK1
,C_YEDEK2
,I_YEDEK1
,I_YEDEK2
,D_YEDEK1
,D_YEDEK2,GETDATE(),@ID FROM NETSIS.dbo.NETSISSCRIPT
)

END

END

Şİmdi Jobs tanımlaması yapalım.

 

USE [msdb]
GO

/****** Object: Job [SCR_KONTROL] Script Date: 19.07.2018 13:29:52 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [[Uncategorized (Local)]] Script Date: 19.07.2018 13:29:52 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]’ AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N’JOB’, @type=N’LOCAL’, @name=N'[Uncategorized (Local)]’
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N’SCR_KONTROL’,
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N’No description available.’,
@category_name=N'[Uncategorized (Local)]’,
@owner_login_name=N’sa’, @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object: Step [SCR] Script Date: 19.07.2018 13:29:53 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N’SCR’,
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N’TSQL’,
@command=N’EXECUTE SP_SCRIPT_AKTAR
‘,
@database_name=N’DWHOUSE’,
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N’SCR’,
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=8,
@freq_subday_interval=1,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20180712,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959,
@schedule_uid=N’e10af8b6-e8ca-44da-b360-04882a3f925b’
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)’
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO

Mail Çıktısı

 

Artık  1 saat arayla 2 tablo arasındaki farkları size mail gönderimi yapacaktır..Yedeklerinize kısa zamanda erişebilir..Kimin yaptıgını çözümlüyebilirsiniz.

 

 

 

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir