2016-10-18 1 views
1

SSIS를 사용하여 PDF 파일을 내보내려고합니다. 내보낼 보고서에는 하나의 매개 변수 (유형 = 정수)가 있습니다. 정확히 here을 수행하는 코드를 인터넷에서 발견했습니다.SSIS는 0KB Pdf 파일을 만듭니다.

그러나이 코드를 ssis에서 실행하면 pdf가 내보내 지지만 파일 크기는 0KB입니다. pdf 파일을 열려고 할 때 오류가 발생합니다. 나는이 작업을 수행 할 때 나는 PDF 및 모든의 다운로드를받을

Imports System 
Imports System.Data 
Imports System.Net 
Imports System.Math 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports System.ComponentModel 
Imports System.Diagnostics 




<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _ 
<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 myCredentials As New NetworkCredential("username", "password") 
     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 = myCredentials 
      loRequest.Timeout = 600000 
      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("varDestinationPath").Value.ToString + "\" + Dts.Variables("varRSParameter").Value.ToString + " " + Format(Now, "yyyyMMdd") + ".pdf" 
     url = "http://Server/ReportServer/Pages/ReportViewer.aspx?%2fMap%2fMap%2fMap%2Repportname&Parameter=" + Dts.Variables("varRSParameter").Value.ToString + "&rs:Format=PDF" 
     SaveFile(url, destination) 



     Dts.TaskResult = ScriptResults.Success 

    End Sub 

나는 URL http://Server/ReportServer/Pages/ReportViewer.aspx?%2fMapName%2fMapName%2fMapName%2Repportname&Parameter= "parametersqlresults"형식 이동하려는 = PDF

: 아래

내가 사용하고있는 코드입니다 괜찮아.

내가보고 서버에 연결 무언가가 될 수 있다고 생각, 그래서 나는 코드에 이것을 추가 : 보안 나는 감사 성공을 볼 수 있습니다> 윈도우 로그에보고 서버에 또한

`Imports System.Net 
Dim myCredentials As New NetworkCredential("username", "password") 
loRequest.Credentials = myCredentials` 

제공된 사용자 이름과 암호로

pdf가 저장된 위치를 여러 위치로 변경했습니다. 나는 또한 그것을 고정 나는이 문제가 몇 달 전 일이 있었다

Solution

+0

. 이건 오타예요? – DForck42

+0

오타가 보이지 않습니다. 하지만 내 VBscript에서 Ctrl 키를 누른 채로 자격 증명을 묻는 메시지가 나타나면 해당 보고서를 볼 수 있습니다. – Vico

답변

1

없이 성공과 함께 'INT32' 에 데이터 형식 '문자열'에서 변수 데이터 유형을 변경 한 그것에 대해 잊고, 때 우리는 서버 업그레이드를 통해 벽을 머리에 대고 다시 고치는 방법을 찾아 내려고했습니다.

문제는 코드를 실행하고 있고 자신이 실행 중이며 SSRS 웹 사이트에서 "브라우저"(또는 그 이상의) 권한을 가지고있을 때입니다. 이것을 SQL 작업으로 실행하면 작업은 SQL Agent 계정 또는 프록시 계정을 통해 실행됩니다. SQL 계정에 SSRS 측 브라우저 권한을 부여해야합니다. 도움이

희망, 라이언 데이비슨 당신이 코드에있는 URL의 동일한 형식을 따르지 않는 수동에 가면 일 밝혔다 URL의

관련 문제