Temat: sql server 2008 R2 - job sprawdzający włączone triggery

Cześć,

szukałem szukałem i nie znalazłem rozwiązania, a mianowicie musze stworzyć (zeskryptować) joba, który sprawdzi mi stan triggerów na bazach a następnie wysle alert (np. mailowo) jeżeli okaże się żę triggery są wyłączone. MOże ktoś z Was robił już coś takiego? i może oc nieco podpowiedzieć.

Dodam iż nie moge skorzystać z innych narzedzi typu dtsx ze wzgl. na ograniczenia nałożone odgórnie, tak samo nie mogę wyklikac joba za pomoca narzedzia w microsoft SQL Server Management Studio ponieważ nie mam do niego dostępu:(

Dzięki za wszystkie wskazówki.

konto usunięte

Temat: sql server 2008 R2 - job sprawdzający włączone triggery

http://msdn.microsoft.com/en-us/library/hh544330(v=sql...

może to ci się przyda
Daniel Grabowski

Daniel Grabowski Interaktywne
planowanie produkcji
on-line z MES

Temat: sql server 2008 R2 - job sprawdzający włączone triggery

Przemysław R.:
http://msdn.microsoft.com/en-us/library/hh544330(v=sql...

może to ci się przyda
Przepraszam, bo nie rozumiem - co ma się przydać?
Informacja, że "Transact-SQL does not support this feature."?
Chyba, że chodziło o coś innego.

Tak czy siak, aby odczytać czy trigger jest aktywny czy nie (wartość pola o.is_disabled) można np. w ten sposób

SELECT o.object_id AS id,
o.name,
t.name AS tblname,
u.name AS owner,
t.type,
o.is_disabled,
o.type AS trigtype,
CAST (p.[value] AS nvarchar(4000)) AS cmt
FROM sys.triggers o
INNER JOIN sys.objects t ON t.object_id = o.parent_id
INNER JOIN sys.schemas u ON u.schema_id = t.schema_id
LEFT OUTER JOIN sys.extended_properties p ON p.major_id = o.object_id AND p.name =
'MS_Description'
WHERE o.type IN ('TR', 'TA') AND
o.parent_id <> 0
ORDER BY o.name,
t.name,
u.name


Co do reszty, to... da się, ale to skomplikowane :) Bo np. osobną kwestią jest konfiguracja Database Mail, jeśli nie zostało to skonfigurowane...
Chyba najłatwiej będzie, skombinować sobie MSSMS i stworzyć takiego JOB'a, a potem za pomocą MSSMS go "zeskrypotować".
Nie wiem czy nie prościej byłoby sobie napisać programiku, który by odpytywał bazy danych o nieaktywne triggery... Dla mnie taka opcja byłaby na pewno prostsza do wykonania.

W sumie, jak Kolega sobie życzy, to mogę mu coś takiego napisać :) Oczywiście bez żadnych opłat.Daniel Grabowski edytował(a) ten post dnia 18.09.12 o godzinie 11:44

konto usunięte

Temat: sql server 2008 R2 - job sprawdzający włączone triggery

Daniel Grabowski:
Przemysław R.:
http://msdn.microsoft.com/en-us/library/hh544330(v=sql...

może to ci się przyda
Przepraszam, bo nie rozumiem - co ma się przydać?
Informacja, że "Transact-SQL does not support this feature."?
Chyba, że chodziło o coś innego.

właśnie o tego SQL co poniżej chodziło :)
Tak czy siak, aby odczytać czy trigger jest aktywny czy nie (wartość pola o.is_disabled) można np. w ten sposób

SELECT o.object_id AS id,
o.name,
t.name AS tblname,
u.name AS owner,
t.type,
o.is_disabled,
o.type AS trigtype,
CAST (p.[value] AS nvarchar(4000)) AS cmt
FROM sys.triggers o
INNER JOIN sys.objects t ON t.object_id = o.parent_id
INNER JOIN sys.schemas u ON u.schema_id = t.schema_id
LEFT OUTER JOIN sys.extended_properties p ON p.major_id = o.object_id AND p.name =
'MS_Description'
WHERE o.type IN ('TR', 'TA') AND
o.parent_id <> 0
ORDER BY o.name,
t.name,
u.name


Co do reszty, to... da się, ale to skomplikowane :) Bo np. osobną kwestią jest konfiguracja Database Mail, jeśli nie zostało to skonfigurowane...

nie jest skomplikowana

SQL-a odpalamy za pomocą BCP -> wynik do pliku
później wysyłamy otrzymany plik za pomocą http://caspian.dotconf.net/menu/Software/SendEmail/

te dwa kroki umieszczamy w pliku cmd i podpinamy pod Task Sheulder-a nawet na stacji roboczej na której pracuj

jak ktoś jest fanem T-SQL-a to może i tak http://support.microsoft.com/kb/312839/pl
Paweł B.

Paweł B. architekt baz danych
/ SQL Developer /BI
Developer

Temat: sql server 2008 R2 - job sprawdzający włączone triggery

Jest też coś takiego, co zwie się Policy Management.
edit: A sorka, miało być bez Management Studio. Paweł B. edytował(a) ten post dnia 18.09.12 o godzinie 14:10

Temat: sql server 2008 R2 - job sprawdzający włączone triggery

Przemysław R.:
Daniel Grabowski:
Przemysław R.:
http://msdn.microsoft.com/en-us/library/hh544330(v=sql...

może to ci się przyda
Przepraszam, bo nie rozumiem - co ma się przydać?
Informacja, że "Transact-SQL does not support this feature."?
Chyba, że chodziło o coś innego.

właśnie o tego SQL co poniżej chodziło :)
Tak czy siak, aby odczytać czy trigger jest aktywny czy nie (wartość pola o.is_disabled) można np. w ten sposób

SELECT o.object_id AS id,
o.name,
t.name AS tblname,
u.name AS owner,
t.type,
o.is_disabled,
o.type AS trigtype,
CAST (p.[value] AS nvarchar(4000)) AS cmt
FROM sys.triggers o
INNER JOIN sys.objects t ON t.object_id = o.parent_id
INNER JOIN sys.schemas u ON u.schema_id = t.schema_id
LEFT OUTER JOIN sys.extended_properties p ON p.major_id = o.object_id AND p.name =
'MS_Description'
WHERE o.type IN ('TR', 'TA') AND
o.parent_id <> 0
ORDER BY o.name,
t.name,
u.name


Co do reszty, to... da się, ale to skomplikowane :) Bo np. osobną kwestią jest konfiguracja Database Mail, jeśli nie zostało to skonfigurowane...

nie jest skomplikowana

SQL-a odpalamy za pomocą BCP -> wynik do pliku
później wysyłamy otrzymany plik za pomocą http://caspian.dotconf.net/menu/Software/SendEmail/

te dwa kroki umieszczamy w pliku cmd i podpinamy pod Task Sheulder-a nawet na stacji roboczej na której pracuj

jak ktoś jest fanem T-SQL-a to może i tak http://support.microsoft.com/kb/312839/pl

Dzieki za odpowiedź, potestuje i zobaczę co z tego wyjdzie:) Co do weryfikacji czy trigger jest włączony to z tym problemów nie mam, bardziej meczy mnie kwestia tego joba +obsługa wyjatku w przypadku gdy dane triggery zostaną wyłączone. Popatrzę na podesłane linki i spróbuję przygotować jakiś skrypt do tego.

Temat: sql server 2008 R2 - job sprawdzający włączone triggery

Hmm, oba watki dotycza obsługi samego wysyłania powiadomienia, natomiast ja się zatrzymałem przy skryptowaniu joba, znalazłem coś takiego w necie, ale czy według Was to pójdzie? AAA dodatkowo jeszcze jedna informacja, nic nie mogę instalowac na tej maszynie. Skrypt po przygotowaniu b. musiał podesłać adminom.

USE [msdb]
GO


BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0

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'moj_test',
@enabled=0,
@notify_level_eventlog=2,
@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

EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'aa',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=3,
@on_success_step_id=0,
@on_fail_action=4,
@on_fail_step_id=3,
@retry_attempts=0,
@retry_interval=1,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'tutaj zakładam nalezy wrzuć zapytanie'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback


EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'every Mon,Tue,Wed,Thur,Fri,Sun at 12:00, without Sat',
@enabled=1,
@freq_type=8,
@freq_interval=63,
@freq_subday_type=1,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=1,
@active_start_date=20070923,
@active_end_date=99991231,
@active_start_time=170000,
@active_end_time=235959,
@schedule_uid=N'dsdssds'
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

Grzegorz Zalewski edytował(a) ten post dnia 18.09.12 o godzinie 14:30

Następna dyskusja:

Replikacja MS SQL SERVER 2008




Wyślij zaproszenie do