Vb.net 从SSIS调用SSR:某些PDF文件已损坏

Vb.net 从SSIS调用SSR:某些PDF文件已损坏,vb.net,reporting-services,ssis,script-task,Vb.net,Reporting Services,Ssis,Script Task,我正在从SSIS脚本任务调用SSRS,并以PDF格式存储报告 下面是我在脚本任务中的代码: Protected Sub SaveFile(ByVal url As String, ByVal localpath As String) Dim loRequest As System.Net.HttpWebRequest Dim loResponse As System.Net.HttpWebResponse Dim loResponseStream As System.I

我正在从
SSIS脚本任务
调用
SSRS
,并以PDF格式存储报告

下面是我在脚本任务中的代码:

 Protected Sub SaveFile(ByVal url As String, ByVal localpath As String)
    Dim loRequest As System.Net.HttpWebRequest
    Dim loResponse As System.Net.HttpWebResponse
    Dim loResponseStream As System.IO.Stream
    Dim loFileStream As New System.IO.FileStream(localpath, System.IO.FileMode.Create, System.IO.FileAccess.Write)
    Dim laBytes(256) As Byte
    Dim liCount As Integer = 1
    Try
        loRequest = CType(System.Net.WebRequest.Create(url), System.Net.HttpWebRequest)
        loRequest.Credentials = System.Net.CredentialCache.DefaultCredentials
        loRequest.Timeout = 7200
        loRequest.Method = "GET"
        loResponse = CType(loRequest.GetResponse, System.Net.HttpWebResponse)
        loResponseStream = loResponse.GetResponseStream
        Do While liCount > 0
            liCount = loResponseStream.Read(laBytes, 0, 256)
            loFileStream.Write(laBytes, 0, liCount)
        Loop
        loFileStream.Flush()
        loFileStream.Close()
    Catch ex As Exception
    End Try
End Sub

Public Sub Main()
    Dim url, destination, Todaydate, FolderName, DestinationError As String
    Try

        Todaydate = Dts.Variables("TodayDate").Value.ToString

        FolderName = Dts.Variables("FolderName").Value.ToString

        destination = Dts.Variables("DestFolder").Value.ToString + "\" + Todaydate + "\" + FolderName + "\" + Dts.Variables("CurrentReport").Value.ToString + "_" + Dts.Variables("CurrentParamID").Value.ToString + "_" + Format(Now, "yyyyMMdd") + ".pdf"
        url = "http://server-name/ReportServer?/ReportPath/AUTOMATED/" + Dts.Variables("CurrentReport").Value.ToString + "&rs:Command=Render&Param=" + Dts.Variables("CurrentParamID").Value.ToString + "&rs:Format=PDF"   

        Dts.Variables("User::GeneratedPDFpath").Value = destination

        SaveFile(url, destination)

    End Try
    Dts.TaskResult = ScriptResults.Success

End Sub
这段代码运行良好,可以生成PDF格式的报告。但是,有时它会生成大小为0 KB的PDF文件。打开该PDF时,会显示损坏文件的错误

另外,我使用了存储结果集的执行SQL任务。使用
Foreach循环
容器中的结果集,它最初为今天的日期创建了文件夹,并将相应的PDF存储在文件夹中


如果有人能在这方面提供帮助,我们将不胜感激。

您为什么要从SSIS致电SSRS?为什么不使用SSRS订阅?您的catch块没有执行任何操作,因此错误将被忽略。你能把错误信息记录下来,看看里面有没有线索吗?我有多个SSRS报告要生成,结果集会根据天的不同而不同。整个过程需要自动化。所以@TabAllemanI确实包含了错误部分。但作业/包不会失败。它只是成功地执行,有时会生成0 KB的文件@MarkWojciechowicz