3

全て、

私はSSISパッケージ(Sql Server 2008)を持っています。これは、いくつかのデータフローとファイル操作を実行し、最後にファイルをFTPサーバーにアップロードします。

ほとんどの作業を完了することができましたが、最後の重要な部分が1つあります。「データフロー」を使用して、データベースからのデータを使用してテキストファイルが生成されます。これで、そのファイルは最後にタイムスタンプで圧縮されます。例:"filename_08132012.zip"。

タイムスタンプは毎日変更されるため、FTPサーバーにアップロードするたびに新しいファイルになります。そのため、「FTPタスク」(これを機能させる方法がわかりませんでした)の代わりに、今日の日付のファイルを検索してFTPサーバーにアップロードする「スクリプトタスク」があります。以下はコードですが、これに関連する2つの質問があります。

  1. この「スクリプトタスク」でその日のファイルを取得します。例:filename_08132012.zip、filename_08142012.zip。日付を適切な形式の文字列に変換するコードがあります。しかし、何らかの理由でそうではありません。
  2. このスクリプトファイルの実行をステップスルーする方法、Visual StudioはVB.netコードを許可していましたか?このスクリプトタスクGUIは、ステップスルーを許可していません。
  3. 空のファイルをFTPサーバーにアップロードします。0バイトのファイル。これをトラブルシューティングするにはどうすればよいですか?
' Microsoft SQL Server Integration Services Script Task
' Write scripts using Microsoft Visual Basic 2008.
' The ScriptMain is the entry point class of the script.

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime

<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _
<System.CLSCompliantAttribute(False)> _
Public Class ScriptMain
    Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
Enum ScriptResults
    Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
    Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
End Enum


Public Sub Main()
    '
    ' Add your code here
    '

    Try

        'Create the connection to the ftp server

        Dim cm As ConnectionManager = Dts.Connections.Add("FTP")

        'Set the properties like username & password

        cm.Properties("ServerName").SetValue(cm, "172.24.97.21")

        cm.Properties("ServerUserName").SetValue(cm, "bbxuser")

        cm.Properties("ServerPassword").SetValue(cm, "blockbuster")

        cm.Properties("ServerPort").SetValue(cm, "21")

        cm.Properties("Timeout").SetValue(cm, "0") 'The 0 setting will make it not timeout

        cm.Properties("ChunkSize").SetValue(cm, "1000") '1000 kb

        cm.Properties("Retries").SetValue(cm, "1")

        'create the FTP object that sends the files and pass it the connection created above.

        Dim ftp As FtpClientConnection = New FtpClientConnection(cm.AcquireConnection(Nothing))

        'Connects to the ftp server

        ftp.Connect()

        'Build a array of all the file names that is going to be FTP'ed (in this case only one file)

        Dim files(0) As String


        Dim FileDate As Date
        FileDate = System.DateTime.Today

        files(0) = "D:\NCR\Apps\RBX.SSIS.BBX_Customer_Extract\Email_Campaign\Redbox_EmailCampaign_and_Analytics_Extract_" + FileDate.ToString("mmddyyyy") + ".zip"

        'ftp the file

        'Note: I had a hard time finding the remote path directory. I found it by mistake by creating both the FTP connection and task in the SSIS package and it defaulted the remote path setting in the FTP task.

        ftp.SendFiles(files, "/Email Campaign", True, False) ' the True makes it overwrite existing file and False is saying that it is not transferring ASCII

        ftp.Close()

    Catch ex As Exception

        Dts.TaskResult = ScriptResults.Failure

    End Try

    Dts.TaskResult = ScriptResults.Success
End Sub

エンドクラス

4

1 に答える 1

1

質問を書き出した直後、私はいくつかのことを理解しました。

  1. 間違ったフォーマットを使用しました。正しい形式はFileDate.ToString( "MMddyyyy")+ ".zip"
files(0) = "D:\NCR\Apps\RBX.SSIS.BBX_Customer_Extract\Email_Campaign\Redbox_EmailCampaign_and_Analytics_Extract_" + FileDate.ToString("mmddyyyy") + ".zip"
files(0) = "D:\NCR\Apps\RBX.SSIS.BBX_Customer_Extract\Email_Campaign\Redbox_EmailCampaign_and_Analytics_Extract_" + FileDate.ToString("MMddyyyy") + ".zip"
  1. (上記を参照)
  2. 私はこれを見つけて動作します:スクリプトタスクのトラブルシューティング
  3. 1と2を解くと、3を解く
于 2012-08-13T15:13:36.493 に答える