0

以下は、SQLを含むファイルを別のサーバーにプッシュするための私のコードです。

 EXEC [ftpPushRegisteredSSIS] '12345', '54321', 'C:\TCC\Manufacturer Integration\100_110 – DiaryBelle','Daily_Dairybelle.txt', '111.111.111.11', 1, 1

 CREATE PROCEDURE [dbo].[FtpPushRegisterSSIS]
    @User VARCHAR(50),
    @Password VARCHAR(50),
    @sourceDir VARCHAR(250),
    @SourceFiles VARCHAR(50),
    @DestinationFTPServer VARCHAR(50),
    @DestinationFTPPath VARCHAR(250),
    @Overwrite BIT,
    @isASCII BIT

AS
BEGIN
    DECLARE @overwriteTF VARCHAR(5)
    DECLARE @isASCIITF VARCHAR(5)

    SET @overwriteTF = 'true'
    SET @isASCIITF = 'true'

    IF @Overwrite = 0
    BEGIN
        SET @overwriteTF = 'false'
    END

    IF @isASCII = 0
    BEGIN
        SET @isASCIITF = 'false'
    END

--  DECLARE @FtpPackage VARCHAR(150)
--  SET @FtpPackage = 'E:\ftpProcTesting\ftpPush.dtsx'
    DECLARE @cmd VARCHAR(1000)
    DECLARE @params VARCHAR(MAX)
    SET @params =   ' /set \package.variables[ftpUser].Value;"' +           @User + '"'+
                    ' /set \package.variables[ftpServer].Value;"' +         @DestinationFTPServer + '"'+
                    ' /set \package.Variables[sourceDir].Value;"' +         @sourceDir + '"' +
                    ' /set \package.variables[sourceFiles].Value;"' +       @SourceFiles + '"'+
                    ' /set \package.variables[destiPath].Value;"/' +        @DestinationFTPPath + '"' +
                    ' /set \package.variables[ftpPass].Value;"' +           @Password + '"' +
                    ' /set \package.variables[overwrite].Value;"' +         @overwriteTF + '"' +
                    ' /set \package.variables[isASCII].Value;"' +           @isASCIITF + '"'


    -- FOR Filesystem package SET @cmd = 'dtexec /f "'+@FtpPackage+'" /Rep N' --set N to V for verbose logging
    SET @cmd = 'dtexec /sq ' + 'ftpPush' + ' /ser DBNAME '
    SET @cmd = @cmd + @params

    CREATE TABLE #output ([output] VARCHAR(500))
    INSERT INTO #output
    EXEC master.dbo.xp_cmdshell @cmd -- ,NO_OUTPUT

    IF  (
            SELECT COUNT(*)
            FROM #output
            WHERE [output] LIKE '%fail%'
            OR [output] LIKE '%error%'
            OR [output] LIKE '%not valid%'
        ) > 0
    BEGIN
        SELECT * FROM #output
        RAISERROR('***|||FTP Operation FAILED|||***',15,1)
    END

    SELECT * FROM #output

END

GO

ファイルDairybelle.txtがサーバーに到達したら、ファイル名の前にgetDate()を含める必要があります。

このようなもの:2012-08-01_Dairybelle.txt

これを行うためにコードにどのような変更を加えることができますか?

現在の場所のファイル名を変更したくありません。送信時に変更したいだけです。そのため、名前は常にDairybelle.txt私のサーバー上にありますが、名前が付けられると、名前が変更されたファイルになります。

ファイル名を変更するコードを記述して、送信後に元に戻すことができることはわかっていますが、もっと簡単な方法があると確信していますか?

4

1 に答える 1

0

私は SSIS を使用することになりました。それははるかに簡単でした!

こちらのリンクをご覧ください!

于 2012-09-18T12:19:29.257 に答える