call a SSIS or DTS Packages from a stored procedure -
11-02-2008
, 08:20 AM
I'm new to SSIS. When i used SQL 2000 and DTS, I was able to call a
DTS package from a stored procedrue. Can I do the same with DTSX or
SSIS packages. I've tried using the following code ->
================================================== ====================
DECLARE @hr INT, @oPKG INT, @Cmd VARCHAR(1000), @RetVal INT, @PkgName
varchar(255), @oStep varchar(255)
Declare @GVOutput int, @out_error varchar(50)
EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUT
Set @PkgName = 'WriteFileToDisk'
SET @Cmd = 'LoadFromSQLServer("(local)", "", "", 256, , , , "'+@PkgName
+'")'
EXEC @hr = sp_OAMethod @oPKG, @Cmd , NULL
EXEC @hr = sp_OAMethod @oPKG, 'Execute'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @oPKG
set @out_error = 'Error '
print @hr
END
else
begin
set @out_error = 'No Error'
end
print @out_error
EXEC @hr = sp_OADestroy @oPKG
================================================== ==================
When I run this code, I get the following error -
0x800403ED Microsoft Data Transformation Services (DTS)
Package No Steps have been defined for the transformation
Package. sqldts80.hlp 700
Also, I've used this code ->
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++
DECLARE @object int
DECLARE @hr int
--create a package object
EXEC @hr = sp_OACreate 'DTS.Package', @object OUTPUT
if @hr <> 0
BEGIN
print 'error create DTS.Package'
RETURN
END
EXEC @hr = sp_OAMethod @object, 'LoadFromStorageFile',
NULL, 'C:\WriteFileToDisk.dtsx', ''
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
print 'error LoadFromStorageFile'
RETURN
END
EXEC @hr = sp_OAMethod @object, 'Execute'
IF @hr <> 0
BEGIN
print 'Execute failed'
RETURN
END
I get this error -
0x80040504 Microsoft Data Transformation Services (DTS)
Package The specified file is not a Package Storage
File. sqldts80.hlp 704
I've tried using dtexec and xp_cmdshell. i get a success message but
no package result. Here is that code.
__________________________________________________ _______________________________
Declare @cmd varchar(1000)
select @cmd = 'dtexec /F "c:\WriteFileToDisk.dtsx"'
exec master..xp_cmdshell @cmd
Any help would be appreciated.
Thx |