2013-09-19 3 views
1

Здесь я использую SQL Server 2008. Я унаследовал старое веб-приложение, которое умирает и заменяется совершенно новым веб-приложением. Новый проект запущен, но старый будет существовать в течение следующих полутора месяцев для переходного периода.Устранение неполадок Простой триггер SQL Server

В этом случае необходимо выполнить действие, когда кто-то добавляет новую запись в таблицу на SQL Server с помощью этого приложения. Старый исходный код довольно приветлив (серьезно, без контроля версий до моего приезда), и я не могу позволить себе тратить время на то, чтобы что-то совместить, чтобы я мог получать уведомление по электронной почте с помощью старого приложения.

Моя мысль - использовать триггер SQL Server для отправки электронной почты ПОСЛЕ INSERT. На самом деле это все, что я хочу: всякий раз, когда новая запись (и она всегда одна, а не десятки) вводится в таблицу, я хочу отправить себе и еще одному счастливчику электронное письмо. Я никогда не делал этого в SQL Server, но это кажется выполнимым.

Вот мой SQL скрипт, как это в настоящее время составляет:

CREATE TRIGGER NotificationMail 
ON OldJunk.[dbo].[JunkTable] 
AFTER INSERT 
AS 
BEGIN 
    EXEC msdb.dbo.sp_send_dbmail --QUESTION: I HAVE NO IDEA WHAT TO PUT HERE, WHAT FOLLOWS 
           -- IS JUST COPYPASTA FROM A FORUM 
      @recipients = '[email protected], [email protected]', 
      @subject = 'Old Registration Request - New Record', 
      @body = 'Somebody decided to register using the old system.' 
END    
GO 

Я получаю эту ошибку, когда я пытаюсь выполнить это создать заявление:

Невозможно создать триггер на «OldJunk.dbo. JunkTable ', поскольку цель не находится в текущей базе данных.

Заранее за вашу помощь.

+2

Вы должны быть ** в ** базе данных «OldJunk», а затем создать триггер CREATE TRIGGER NotificationMail ON [dbo]. [JunkTable] '- вы не можете использовать трехчастную' (базу данных). (Схема). (object) 'нотация в определении триггера –

+0

Я был связан с схемой и имел перед этим запуск запроса в соответствующей базе данных. Когда я пытаюсь убить (базу данных). (Schema). (Object) в пользу (схемы). (Object), он дает это сообщение: Объект 'dbo.JunkTable' не существует или недействителен для этой операции. Всякий раз, когда я просто использую (объект), я получаю следующее: объект «JunkTable» не существует или недействителен для этой операции. – shubniggurath

+0

Я полагаю, что я не могу понять, что вы подразумеваете под «в базе данных OldJunk» - я подключен к схеме и могу выполнять запросы на таблицах - есть ли для этого больше? – shubniggurath

ответ

1

Вы должны быть в базу данных издания OldJunk (с помощью USE .... команды в SQL Server Management Studio), а затем создать триггер с помощью этих операторов SQL:

USE OldJunk; 
GO 

CREATE TRIGGER NotificationMail ON [dbo].[JunkTable] 
..... 

Вы не можете использовать трех- часть (database).(schema).(object) обозначение в определении триггера.

Если это не сработает - тогда у вас, вероятно, нет такой таблицы - есть ли опечатка? Или это не таблица?

+1

Еще раз спасибо !!! – shubniggurath

Смежные вопросы