vb.net 脚本通过 URL 调用 SSRS 报告 当输出文件超过一定大小时出现错误

问题描述 投票:0回答:1

我一直在使用以下脚本从 SSIS 包自动执行/调用 SSRS 报告,没有出现任何问题。我遇到的问题是,当我返回到某个日期(超过 4 个月的数据)时,Excel 文件似乎仅部分填充,当我打开它时,我收到一条错误消息,指出“我们发现了一个问题” zzzz.xlsx 中有一些内容,您想尝试修复它吗?”当我缩短报告的日期范围时,不会发生这种情况,如果我从此脚本中获取生成的 URL 并将其粘贴到我的 Web 浏览器中,它也可以正常工作。我想知道是否有尺寸限制?输出文件大约 30mb。再次,将此脚本生成的 URL 直接粘贴到浏览器中即可正常运行。非常感谢任何帮助!

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.ComponentModel
Imports System.Diagnostics
<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute()>
<System.CLSCompliantAttribute(False)>
Partial 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
    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 = 600000000
            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 As String
        destination = Dts.Variables("Folder_Destination").Value.ToString + "\" + Dts.Variables("ReportName").Value.ToString + Dts.Variables("OutPutDate").Value.ToString + ".xlsx"
        'destination = Dts.Variables("Folder_Destination").Value.ToString + "\" + Dts.Variables("ReportName").Value.ToString + ".xlsx"
        url = Dts.Variables("ReportURL").Value.ToString + Dts.Variables("Location").Value.ToString + Dts.Variables("ServiceArea").Value.ToString + "&StartDate=" + Dts.Variables("START_DATE").Value.ToString + "&EndDate=" + Dts.Variables("END_DATE").Value.ToString + "&RUNTYPE=2" + "&rs:Format=EXCELOPENXML"
        SaveFile(url, destination)
        Dts.TaskResult = ScriptResults.Success
    End Sub
End Class
vb.net
1个回答
0
投票

问题似乎在于 SSRS 报告生成多个工作表。我还没找到原因,但似乎每个工作表都有数据限制。

© www.soinside.com 2019 - 2024. All rights reserved.