0

我通常不会使用函数来执行代码,但是我的老板坚持要我使用函数而不是 SP 来执行 SSIS 包。真的不知道为什么!

我需要创建一个将执行以下代码的函数,并且用户只需要在调用该函数时提供 SSIS 包名称。

declare @cmdtest varchar(200)
set @cmdtest = 'dtexec /f "C:\Users\Desktop\testpackage.dtsx"'
exec master..xp_cmdshell @cmdtest

上面的代码将执行我的 testpackage.dtsx,现在我的函数必须只询问 SSIS 包名称并且必须是 varchar。

由于我对功能一无所知,有人可以告诉我这样做的最佳方法是什么。我假设需要使用标量函数?

4

1 回答 1

3

也许是这样的:

CREATE FUNCTION dbo.ExecutePackage
(
    @PackageName VARCHAR(30)
)
RETURNS BIT
AS 
BEGIN
    DECLARE @cmdtest varchar(200);
    SET @cmdtest = 'dtexec /f "C:\Users\Desktop\'+ @PackageName + '.dtsx"';
    EXEC master..xp_cmdshell @cmdtest;

    RETURN 1; --you could do some error checking and return either true or false - just a thought
END

然后你执行它

SELECT dbo.ExecutePackage('testpackage');
于 2012-07-25T11:45:04.207 回答