Avatar billede hedemann Nybegynder
16. september 2005 - 14:47 Der er 4 kommentarer og
1 løsning

Trigger, insert og xp_cmdshell

Hej.

Jeg har et problem med en trigger der eksekveres ved indsættelse af rækker i en database.

Jeg har en tabel der skal modtage rækker(data) fra mange forskellige programmer, med alle med det samme format. På tabellen er der en trigger der ved insert aktiver et VB.Net program der kaldes med den indsatte rækkes id’et  som parameret. Programmet skal så læse (Select) den række der indsat i tabellen,  – med det der her det går galt.

Triggeren se således ud.

CREATE TRIGGER SendMSGTrigger
ON dbo.SendMSG
AFTER INSERT
AS
Declare @id nvarchar(250)
Declare @cmdline nvarchar(250)

SELECT @id=ins.id  FROM inserted ins
Set @cmdline = 'C:\SendMSG\SendMSG.exe'  + @id
EXEC master..xp_cmdshell @cmdline

Og den fejl meddelelse der kommer i eventloggen er

The description for Event ID ( 0 ) in Source ( .NET Runtime ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: .NET Runtime version 1.1.4322.573- SendMSG.exe - Common Language Runtime Debugging Services: Application has generated an exception that could not be handled.

Det skal siges at programmet virker fint hvis man køre det fra en Cmd-prompt…

Er der nogle der kan hjælpe.
Avatar billede trer Nybegynder
21. september 2005 - 00:41 #1
Det er svært at se ud fra dit eksempel - men har du et mellemrum efter ".exe" i din @cmdline ?
Avatar billede hedemann Nybegynder
21. september 2005 - 09:31 #2
ja
Avatar billede trer Nybegynder
21. september 2005 - 10:36 #3
prøv at ændre din nvarchar til en varchar

og så aktiver din debugger - evt. tilføj debug kode - så du kan se hvilken exception exe-filen generer..
Avatar billede hedemann Nybegynder
28. september 2005 - 13:38 #4
Ændring af varablen har ingen betydning, variablen modtages i programmet - og skrives i en log. Og jeg er sikker på at triggeren køre, idet jeg opdater et af databasens felter ved hjælp af triggeren.
Avatar billede hedemann Nybegynder
30. september 2005 - 11:38 #5
Sagens lukkes - løsning fundet, der skulle sættes en "Commit" ind før programmet kaldes.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester