以下は、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
私のサーバー上にありますが、名前が付けられると、名前が変更されたファイルになります。
ファイル名を変更するコードを記述して、送信後に元に戻すことができることはわかっていますが、もっと簡単な方法があると確信していますか?