我通常不会使用函数来执行代码,但我的老板坚持要求我使用函数而不是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。
由于我没有了解功能,有人可以告诉我这样做的最佳方法是什么。我假设需要使用标量函数?
答案 0 :(得分: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');