[ mmelanny @ 05.05.2006. 11:36 ] @
Kako u okviru trigger-a izvrsiti package?
[ milut @ 05.05.2006. 13:39 ] @
Ako mislis na dts-package, najjednostavnije je da kreiras job koji izvrsava dts package i iz trigger-a pozoves sp_start_job.
Job koji poziva dts mozes da kreiras rucno ili iz Enterprise-a desni klik na package > schedule job kreira job sa istim imenom kao i package.

Postoje i drugi nacini: pozivanje direktno (bez job-a), ali nije bas jednostavno ili pozivanjem eksternog dtsrun.exe
[ mmelanny @ 05.05.2006. 14:13 ] @
da...u pitanju je DTS package...

probala sam da ubacim ovo u trigger:


DECLARE @hr INT, @oPKG INT, @Cmd VARCHAR(1000), @RetVal INT
DECLARE @PkgName varchar(256)
set @PkgName = "DTS1"

EXECUTE @hr = sp_OACreate 'DTS.Package', @oPKG OUT
IF @hr <> 0
BEGIN
PRINT ' ** Create Package Object Failed **'
PRINT ''
EXEC sp_OAGetErrorInfo @oPKG, @hr
RETURN
END

SET @Cmd = 'LoadFromSQLServer("(local)" ,"sa" ,"sa" ,0 , , , ,"' + @PkgName + '")'
EXEC @hr = sp_OAMethod @oPKG, @Cmd, NULL
IF @hr <> 0
BEGIN
PRINT ' ** Load Package Failed **'
PRINT ''
EXEC sp_OAGetErrorInfo @oPKG, @hr
RETURN
END

EXEC @hr = sp_OAMethod @oPKG, 'Execute'
PRINT @PkgName
PRINT @RetVal
IF @hr <> 0
BEGIN
PRINT ' ** Execute Package Failed **'
EXEC sp_OAGetErrorInfo @oPKG, @hr
--RETURN
END
ELSE
PRINT ' ** Execute Package Succeeded **'


EXEC @hr = sp_OADestroy @oPKG
IF @hr <> 0
BEGIN
PRINT ' ** Destroy Package Failed **'
EXEC sp_OAGetErrorInfo @oPKG, @hr
RETURN
END

Kada se okine trigger jednostavno zablokira i ne uradi nista, ali iz SP radi bez problema. Ima li neko pojma zasto?



[ mmelanny @ 05.05.2006. 14:18 ] @
btw. isto se desava i ako iz triggera pozovem SP...
[ mmelanny @ 05.05.2006. 15:26 ] @
ok...napravila sam job od DTS-a i to radi...

ali ja bih ako neko zna da mi razresi ovu misteriju oko pozivanja package-a direktno iz trigger-a...thanks unapred

[Ovu poruku je menjao mmelanny dana 05.05.2006. u 16:27 GMT+1]

[Ovu poruku je menjao mmelanny dana 05.05.2006. u 16:44 GMT+1]