Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在FTP推送| SQL上重命名文件_Sql Server_Tsql_Ftp - Fatal编程技术网

Sql server 在FTP推送| SQL上重命名文件

Sql server 在FTP推送| SQL上重命名文件,sql-server,tsql,ftp,Sql Server,Tsql,Ftp,下面是我将带有SQL的文件推送到另一台服务器的代码 EXEC [ftpPushRegisteredSSIS] '12345', '54321', 'C:\TCC\Manufacturer Integration\100_110 – DiaryBelle','Daily_Dairybelle.txt', '111.111.111.11', 1, 1 当文件Dairybelle.txt到达服务器时,我希望它在文件名前面包含getDate() 类似这样:2012-08-01_Dairybelle

下面是我将带有SQL的文件推送到另一台服务器的代码

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

当文件
Dairybelle.txt
到达服务器时,我希望它在文件名前面包含getDate()

类似这样:
2012-08-01_Dairybelle.txt

为了做到这一点,我可以对代码进行哪些更改

我不想更改当前位置的文件名,我只想在发送时更改它。 因此,在我的服务器上,名称仍然是
Dairybelle.txt
,但当它到达它们时,它将拥有重命名的文件


我知道我可以编写代码来更改文件名,然后在发送后将其更改回来,但我确信有更简单的方法吗?

我最终使用了SSIS,这更简单


如果没有更多关于
ftpPushRegisteredSSIS
过程的详细信息,几乎不可能为您提供帮助,因为您发布的内容甚至不清楚参数是什么。能否将过程代码添加到问题中?要执行所需操作,需要修改由该过程触发的SSIS包(该过程似乎被称为
ftpPush
),以指定目标服务器上的文件名。您可以在SSIS包中控制重命名,也可以添加额外的SSIS参数以支持重命名文件。根据提供的信息,不能仅通过修改此存储过程来进行更改。
 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