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 に答える