2010-02-02 9 views
6

Trong một Script Task, tôi đang cố gắng để lấy một tập tin từ một vị trí mạng và FTP rằng tập tin đến một vị trí ngoại viSSIS lỗi script nhiệm vụ lấy giá trị biến

  • Trong SSIS tôi tạo ra các FTP Connection và thử nghiệm đó là thiết lập và làm việc
  • Created ba biến

    • biến 1. FullPathName = \ ftpservercsc \\\ filename.txt
    • biến 2 FTPFilePath = \ ftpservercsc \\\
    • biến 3 FTPFileName = filename.txt
  • Tạo một Script Task và bổ sung mã vb như vậy ...

    'Get instance of the connection manager. 
    Dim cm As ConnectionManager = Dts.Connections("FTP Connection Manager") 
    Dim remotePath As String = Dts.Variables("FTPFilePath").Value.ToString 
    
    'create the FTP object that sends the files and pass it the connection 
    'created above. 
    Dim ftp As FtpClientConnection = New FtpClientConnection 
                 (cm.AcquireConnection(Nothing)) 
    
    'Connect to the ftp server 
    ftp.Connect() 
    
    'Set the path on the FTP server where dropping files 
    'ftp.SetWorkingDirectory("/Prequalify") 'set the remote directory 
    
    Dim files(0) As String 
    files(0) = Dts.Variables("FTPFileName").Value.ToString 'eg. File1.trg 
    
    'Send File 
    ftp.SendFiles(files, remotePath, True, True) 
    
    ' Close the ftp connection 
    ftp.Close() 
    
    
    'Dts.Events.FireInformation(0, context, "File " + fileToGet 
    '  + " retrieved successfully.", Nothing, Nothing, True) 
    Dts.TaskResult = Dts.Results.Success 
    
  • Lỗi: Không thể tìm thấy phần tử trong bộ sưu tập. Lỗi này xảy ra khi bạn cố gắng lấy ra một phần tử từ một bộ sưu tập trên một thùng chứa trong khi thực hiện gói và phần tử không có ở đó.

Vì vậy, tôi đã nhận xét ra và tìm thấy các lỗi được tạo ra trên lấy giá trị biến nhưng tôi không biết những gì không đúng ở đây

Dim remotePath As String = Dts.Variables("FTPFilePath").Value.ToString 

Tôi đã thử nhiều khả năng tìm lại thay đổi và tất cả nhận được cùng một lỗi. Bất cứ ai nhìn thấy bất cứ điều gì sai?

Trả lời

15

Hai điều:

  1. Hãy chắc chắn rằng bạn cấu hình các Script Task để có đọc truy cập vào biến. Để thực hiện việc này, hãy nhấp chuột phải vào Tác vụ Tập lệnh và chọn Chỉnh sửa. Nhấp vào ... dưới ReadOnlyVariables.
  2. Đủ điều kiện cho các biến của bạn như Dts.Variables["User::RemotePath"].Value
+0

Tuyệt vời! Đó là chính xác nó. Các tập lệnh chạy ngay bây giờ tuy nhiên nó không thực sự sao chép các tập tin trên. Tôi nghĩ rằng điều này đã cho tôi một khởi đầu tuyệt vời mặc dù. Cảm ơn sự hỗ trợ. –

+0

Giải quyết vấn đề của tôi - uv - cảm ơn! –