Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Триггер срабатывающий после восстановления БД  [new]
fenegz
Member

Откуда:
Сообщений: 3
Доброе время суток.
Есть ли какой нибудь вариант организации выполнения запроса сразу же после восстановления БД?

Пытался организовать триггер над системной таблицей msdb..restorehistory . Знаю что пользовательские триггеры не работают в системных бд , поэтому поменял свойство триггера (Is_ms_shipped) с помощью процедуры sp_MS_marksystemobject. К сожалению триггер так и не стал обрабатываться.
8 июл 15, 10:32    [17866136]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
...а вы каким сресдтвом БД востанавливаете ? Может просто шаг в джобе сделать и не изобратетать велосипед?
8 июл 15, 10:48    [17866298]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
fenegz
Member

Откуда:
Сообщений: 3
Maxx, восстановлением занимается другой человек и Вы правы легче бы создать джоб ,который бы он запускал, но мне хотелось бы что бы это происходило без его участия.
8 июл 15, 12:46    [17867071]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
напищите ему Хранимую процедуру :)) Пусть запускает...
зашифруйте ,сохраните в мастере..етц..и скажите ему - вызывай дорогой просиду и усе
8 июл 15, 12:47    [17867080]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
komrad
Member

Откуда:
Сообщений: 5252
fenegz
Пытался организовать триггер над системной таблицей msdb..restorehistory . Знаю что пользовательские триггеры не работают в системных бд , поэтому поменял свойство триггера (Is_ms_shipped) с помощью процедуры sp_MS_marksystemobject. К сожалению триггер так и не стал обрабатываться.


прекрасно работают, у меня в свое время была парочка триггеров для отслеживание модификации джобов
8 июл 15, 13:52    [17867402]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
gang
Member

Откуда:
Сообщений: 1394
fenegz,

Можете настроить Алерт на событие №18267 или счетчик SQLServer:Databases; Backup/Restore Throughput/sec; _Total >0
На срабатывание - мейл или джоб, ну а уж в джобе какой угодно скрипт.
8 июл 15, 15:58    [17868154]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
o-o
Guest
komrad
fenegz
.. К сожалению триггер так и не стал обрабатываться.


прекрасно работают, у меня в свое время была парочка триггеров для отслеживание модификации джобов

значит, (системная) таблица таблице рознь.
у меня создается триггер на dbo.restorehistory, но не срабатывает
create table dbo.r(txt varchar(400));
go

alter trigger dbo.restore_tr on dbo.restorehistory after insert
as insert into dbo.r values('restore_tr');

create database r;
backup database r to disk = 'C:\backups\r.bak';
restore database r from disk = 'C:\backups\r.bak' with replace;

select *
from dbo.r;
---

вас не затруднит привести код работающего триггера на dbo.restorehistory?

К сообщению приложен файл. Размер - 84Kb
8 июл 15, 17:09    [17868529]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
Basma4
Member

Откуда:
Сообщений: 124
o-o,
На sysjobs триггер работает, на остальных нет, может из за констрейнтов хз.
8 июл 15, 17:50    [17868760]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
komrad
Member

Откуда:
Сообщений: 5252
o-o
вас не затруднит привести код работающего триггера на dbo.restorehistory?


у меня на sysjobs был триггер

пример ниже

+
USE [msdb]
GO

/****** Object:  Trigger [dbo].[tr_SysJobs_insert]    Script Date: 09/06/2013 17:05:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE trigger [dbo].[tr_SysJobs_insert]  
ON [dbo].[sysjobs]  
FOR INSERT AS  
SET NOCOUNT ON  

DECLARE @UserName VARCHAR(50),  
@HostName VARCHAR(50),  
@JobName VARCHAR(100),  
@Bodytext VARCHAR(200),  
@SubjectText VARCHAR(200), 
@Servername VARCHAR(50) 

SELECT @UserName = SYSTEM_USER
select @HostName = HOST_NAME()  
SELECT @Servername = @@servername 

select top 1 @JobName=name from inserted

  set @Bodytext = 'User: '+@UserName+char(10)+'Host: '+@HostName+char(10)+
        'Job: ['+@JobName+']'+char(10)+'Date: '+CONVERT(VARCHAR(20),GETDATE(),100)  
  
  set @SubjectText='Job CREATED: ['+@JobName+'] @ '+ @Servername

  -- send out alert email 
  EXEC msdb.dbo.sp_send_dbmail  
  @profile_name = 'default profile', --<<< insert your Mail Profile here 
  @recipients = 'DBMonitoring@xxxxxx.com', --<<< insert your team email here 
  @body = @Bodytext,  
  @subject = @SubjectText  

GO
8 июл 15, 17:54    [17868788]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
komrad
Member

Откуда:
Сообщений: 5252
проблема не нова

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1222bf13-1096-4c4e-ad39-9a5d76f540a8/restore-database-notification?forum=transactsql
8 июл 15, 17:58    [17868821]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
fenegz
Member

Откуда:
Сообщений: 3
gang,komrad, спасибо за ответы, способ подходящий. Единственно интересно почему триггер не работает и как это все таки исправить.
10 июл 15, 09:26    [17875299]     Ответить | Цитировать Сообщить модератору
 Re: Триггер срабатывающий после восстановления БД  [new]
o-o
Guest
и сюда тоже подойдет способ Event Notifications (Database Engine)
событие называется AUDIT_BACKUP_RESTORE_EVENT
можно логировать, можно реагировать

К сообщению приложен файл. Размер - 11Kb
24 июл 15, 16:48    [17931293]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить