miércoles, 9 de febrero de 2011

Ejecución de un DTS desde un SP en SQL 2000

Sobre todo en entornos de tipo Warehouse se requiere ejecutar bajo demanda un DTS para ejecutar alguna extracción o transformación luego de una acción o transacción de la BD.


En seguida el código de un SP que ejecuta paquetes DTS en SQL 2000.



1CREATE PROCEDURE [dbo].[spExecuteDTSPackage]
2: @in_varPackageName Varchar(100),
3: @in_varServerName varchar(20),
4: @out_chrErrorType Char(3'SYS' OUTPUT,
5: @out_intErrorCode Int =OUTPUT 
6AS
7DECLARE @object int,
8: @hr int,
9: @src varchar(255), 
10: @desc varchar(255),
11: @val as varchar(100),@err int,@errDesc varchar(500)
12
13
14-- LOAD A VARIABLE WITH A NEEDED PROCEDURE CALL..
15SELECT @val 'LoadFromSQLServer(' + @in_varServerName + ', "", "", 256, , , , ' + @in_varPackageName + ')';
16-- CREATE THE OBJECT.
17EXEC @hr master..sp_OACreate 'DTS.package', @object OUT;
18IF @hr <> 0
19
BEGIN
20:       -- Trapping error if object not created
21:         EXEC master..sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
22:         SELECT @err=@@error
23:         SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
24if @err<>0
25
:        goto Catch
26END
27-- GET THE DTS PACKAGE REFRENCE.
28
29EXEC @hr master..sp_OAMethod @object, @Val,  NULL;
30IF @hr <> 0
31
BEGIN
32:        -- Trapping error if Execute failed
33EXEC master..sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
34SELECT @err=@@error
35SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
36:        if @err<>0
37
:         goto Catch
38END
39
40-- EXECUTE THE DTS PACKAGE.
41EXEC @hr master..sp_OAMethod @object, 'Execute'
42IF @hr <> 0
43
BEGIN
44:        -- Trapping error if Execute failed
45:       EXEC master..sp_OAGetErrorInfo @object, @src OUT, @desc OUT 
46:       SELECT @err=@@error
47:       SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
48:        if @err<>0
49
:        goto Catch
50END
51
52goto End
53
54
55: Catch:
56
57SELECT @errDesc=Description from master..sysmessages WHERE error=@err
58RAISERROR (@errDesc,16,1)
59return @err
60
61End:
62
63return 0
64
GO

Transacciones Fiori

  /UI2/CACHE Register service for UI2 cache use /UI2/CACHE_DEL Delete cache entries /UI2/CHIP Chip Registration /UI2/CUST Customizing of UI ...