Ich habe einen Trigger auf einem Tisch. Es ist ein sehr einfacher Trigger, der nach dem Einfügen gesetzt wird, sendet mir eine E-Mail. Seit ich diesen Trigger aktiviert habe, wurden mir alle 5 oder 6 Minuten E-Mails vom System geschickt. Es gibt nur ein Problem. Jedes Mal, wenn ich eine E-Mail zu erhalten, ist die Tabelle leerSQL Server-Trigger wird unerklärlich ausgelöst
Hier mein Trigger ist
USE [didaprod]
GO
/****** Object: Trigger [dbo].[Caseplayer_CaseId_Restore_insert_mail] Script Date: 09-08-2016 11:59:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE trigger [dbo].[Caseplayer_CaseId_Restore_insert_mail] on [dbo].[Caseplayer_CaseId_Restore]
AFTER INSERT
as
SET NOCOUNT ON
declare @tekst nvarchar(500);
set @tekst = 'caseid sat til null på caseplayer! Tjek Caseplayer_CaseId_Restore tabel!' + convert(varchar,getdate(),105);
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mail',
@recipients = '[email protected]',
@subject = 'CASEID SAT TIL NULL!!!',
@body = @tekst
SET NOCOUNT OFF
GO
Ich habe versucht, manuell eine Zeile einzufügen, oder ein paar Zeilen in der Tabelle, nur um zu überprüfen und ja, der Auslöser wird auch ausgelöst, wenn ein richtiger Einschub vorhanden ist. Aber ich kann nicht erklären, warum ich weiterhin die E-Mails empfange! Was den Tisch angeht, hat er nichts Besonderes.
USE [didaprod]
GO
/****** Object: Table [dbo].[Caseplayer_CaseId_Restore] Script Date: 09-08-2016 12:04:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Caseplayer_CaseId_Restore](
[Id] [int] NOT NULL,
[CaseId] [int] NOT NULL,
[TimeOfChange] [datetime] NOT NULL
) ON [PRIMARY]
GO
Ich habe jetzt den Auslöser deaktiviert und bestätigt, dass die E-Mails gestoppt haben. Aber das scheint für mich ein fast magisches Problem zu sein, und ich würde gerne eine Antwort bekommen.
Angenommen, ich tun
delete from [Caseplayer_CaseId_Restore]
Und nur die Tabelle in Ruhe lassen. Ich werde immer noch E-Mails vom System bekommen und mir sagen, dass ich die Tabelle überprüfen soll. Wenn ich führen Sie dann eine
select * from [Caseplayer_CaseId_Restore]
Der Tisch ist leer
Ist diese Tabelle von einem anderen SPs verarbeitet? Ist es möglich, dass einige andere Funktionen nach Zeilen in dieser Tabelle suchen, sie verarbeiten und schließlich entfernen? –
Es ist eine komplett neue Tabelle. Nichts interagiert mit ihm, außer dass ich einen Trigger auf eine andere Tabelle namens "CasePlayers" habe, die Zeilen in meine "Restore" -Tabelle einfügt, wenn ein bestimmtes Kriterium erfüllt ist. Dies habe ich getestet und funktioniert wie erwartet. Das Ganze ist auf ein Legacy-System zurückzuführen, das wir ab und zu versuchen, Selbstmord zu begehen, indem wir ab und zu ein bestimmtes Feld in der Caseplayer-Tabelle zurücksetzen. Mein Auslöser für Caseplayer, fügen Sie einfach ein, was benötigt wird, um eine Wiederherstellung durchzuführen, in meiner Wiederherstellungstabelle, so dass ich nicht auf Backups zurückgreifen muss, sondern stattdessen eine schnelle Aussage machen kann. –