Windows Vista Forums

Binary Writer generating empty files one one server but not on oth
  1. #1


    flutophilus Guest

    Binary Writer generating empty files one one server but not on oth

    I have a routine that generates a file (actually a pdf) from a database blob
    object. It has been working for several years on a variety of servers and
    PC's. Now we have one server on which the routine generates empty ( zero
    byte) files. This server is running Windows 2003 R2 SP2 but we have another
    server with the same configuration which runs exactly the same release and
    works fine. I've tried writing the files to different locations including a
    hard-code folder on the C: drive and the Application.CommonAppDataPath but it
    makes no difference. I've tried runnin as loca machine\administrator but it
    doesn;t work.

    Here's the code (dbhelper is a standard function that returns an open
    connection object)

    Public Function FetchPDFtoFile(ByVal booTestMode As Boolean, ByVal strRecno
    As String, ByVal strTempPath As String) As String

    ' Read the specified PDF and create a data file

    Dim dbHelper As New dbHelper
    ' open database connection
    Dim dcConnection As OdbcConnection =
    dbHelper.GetODBCConnection(booTestMode)

    Using dcConnection

    ' set up the query string depending on user-supplied data
    Dim strCommand As String = "SELECT pdf FROM pdfdocument WHERE
    recno = " & strRecno

    ' read data into the DataReader. NB Sequential Access parm
    Dim cmCommand As New OdbcCommand(strCommand, dcConnection)
    Dim drReaderPDF As OdbcDataReader =
    cmCommand.ExecuteReader(CommandBehavior.SequentialAccess)

    If drReaderPDF.Read() Then

    ' create random temp file name
    Dim dtNow As New Date
    dtNow = Now()
    Dim intMilliSec As Integer = dtNow.Millisecond()
    Dim intSec As Integer = dtNow.Second
    Dim randObj As New Random(intMilliSec + intSec)
    Dim strPdfFileName As String = "doc" & randObj.Next.ToString
    & ".pdf"

    Directory.CreateDirectory(strTempPath)
    Dim strPdfFullFileName As String = strTempPath &
    strPdfFileName

    'NB these temp files should be removed in the global section
    when app shuts
    ' down but just in case ...
    File.Delete(strPdfFullFileName)

    ' Create a filestream to write the output to the temp file.
    Dim fs As New FileStream(strPdfFullFileName,
    FileMode.OpenOrCreate, FileAccess.Write)
    Dim bw As New BinaryWriter(fs)

    Dim bufferSize As Integer = 1000 ' The size of the BLOB
    buffer.
    Dim outbyte(bufferSize - 1) As Byte ' The BLOB byte()
    buffer to be filled by GetBytes.
    Dim retval As Long ' The bytes returned
    from GetBytes.
    Dim startIndex As Long ' The starting position
    in the BLOB output.

    ' Reset the starting byte for a new BLOB.
    startIndex = 0



    ' Read bytes into outbyte() and retain the number of bytes
    returned.
    retval = drReaderPDF.GetBytes(0, startIndex, outbyte, 0,
    bufferSize)

    ' Continue reading and writing while there are bytes beyond
    the size of the buffer.
    Do While retval = bufferSize
    bw.Write(outbyte)
    bw.Flush()
    ' Reposition the start index to the end of the last
    buffer and fill the buffer.
    startIndex += bufferSize
    retval = drReaderPDF.GetBytes(0, startIndex, outbyte, 0,
    bufferSize)
    Loop

    If retval > 0 Then
    ' Write the remaining buffer.
    bw.Write(outbyte, 0, CInt(retval - 1))
    bw.Flush()
    End If
    ' Close the output file.
    bw.Close()
    fs.Close()
    dbHelper.CloseODBC(dcConnection)

    Return strPdfFullFileName
    Else
    dbHelper.CloseODBC(dcConnection)
    Return Nothing
    End If
    End Using

    End Function

      My System SpecsSystem Spec

  2. #2


    Gregory A. Beamer Guest

    Re: Binary Writer generating empty files one one server but not on oth

    I would find what is differnt about the two servers: installed software,
    patches, etc. The fact the code is working on one server suggests that the
    code is not the issue, or at least not the only issue. At a cursory glance I
    see nothing wrong with it.

    One thing I might add is some instrumentation to the code, like checking the
    pulled blob and flagging when it has nothing to write as well as when it
    writes a 0 byte file. This will help troubleshooting where in the pipeline
    the problem is.

    --
    Gregory A. Beamer
    MVP; MCP: +I, SE, SD, DBA

    Blog:
    http://feeds.feedburner.com/GregoryBeamer

    *********************************************
    | Think outside the box |
    *********************************************
    "flutophilus" <flutophilus@xxxxxx> wrote in message
    news:74CEB85D-64B9-471F-AC5C-9944787B3026@xxxxxx

    >I have a routine that generates a file (actually a pdf) from a database
    >blob
    > object. It has been working for several years on a variety of servers and
    > PC's. Now we have one server on which the routine generates empty ( zero
    > byte) files. This server is running Windows 2003 R2 SP2 but we have
    > another
    > server with the same configuration which runs exactly the same release and
    > works fine. I've tried writing the files to different locations including
    > a
    > hard-code folder on the C: drive and the Application.CommonAppDataPath but
    > it
    > makes no difference. I've tried runnin as loca machine\administrator but
    > it
    > doesn;t work.
    >
    > Here's the code (dbhelper is a standard function that returns an open
    > connection object)
    >
    > Public Function FetchPDFtoFile(ByVal booTestMode As Boolean, ByVal
    > strRecno
    > As String, ByVal strTempPath As String) As String
    >
    > ' Read the specified PDF and create a data file
    >
    > Dim dbHelper As New dbHelper
    > ' open database connection
    > Dim dcConnection As OdbcConnection =
    > dbHelper.GetODBCConnection(booTestMode)
    >
    > Using dcConnection
    >
    > ' set up the query string depending on user-supplied data
    > Dim strCommand As String = "SELECT pdf FROM pdfdocument WHERE
    > recno = " & strRecno
    >
    > ' read data into the DataReader. NB Sequential Access parm
    > Dim cmCommand As New OdbcCommand(strCommand, dcConnection)
    > Dim drReaderPDF As OdbcDataReader =
    > cmCommand.ExecuteReader(CommandBehavior.SequentialAccess)
    >
    > If drReaderPDF.Read() Then
    >
    > ' create random temp file name
    > Dim dtNow As New Date
    > dtNow = Now()
    > Dim intMilliSec As Integer = dtNow.Millisecond()
    > Dim intSec As Integer = dtNow.Second
    > Dim randObj As New Random(intMilliSec + intSec)
    > Dim strPdfFileName As String = "doc" &
    > randObj.Next.ToString
    > & ".pdf"
    >
    > Directory.CreateDirectory(strTempPath)
    > Dim strPdfFullFileName As String = strTempPath &
    > strPdfFileName
    >
    > 'NB these temp files should be removed in the global
    > section
    > when app shuts
    > ' down but just in case ...
    > File.Delete(strPdfFullFileName)
    >
    > ' Create a filestream to write the output to the temp file.
    > Dim fs As New FileStream(strPdfFullFileName,
    > FileMode.OpenOrCreate, FileAccess.Write)
    > Dim bw As New BinaryWriter(fs)
    >
    > Dim bufferSize As Integer = 1000 ' The size of the BLOB
    > buffer.
    > Dim outbyte(bufferSize - 1) As Byte ' The BLOB byte()
    > buffer to be filled by GetBytes.
    > Dim retval As Long ' The bytes returned
    > from GetBytes.
    > Dim startIndex As Long ' The starting
    > position
    > in the BLOB output.
    >
    > ' Reset the starting byte for a new BLOB.
    > startIndex = 0
    >
    > ' Read bytes into outbyte() and retain the number of bytes
    > returned.
    > retval = drReaderPDF.GetBytes(0, startIndex, outbyte, 0,
    > bufferSize)
    >
    > ' Continue reading and writing while there are bytes beyond
    > the size of the buffer.
    > Do While retval = bufferSize
    > bw.Write(outbyte)
    > bw.Flush()
    > ' Reposition the start index to the end of the last
    > buffer and fill the buffer.
    > startIndex += bufferSize
    > retval = drReaderPDF.GetBytes(0, startIndex, outbyte,
    > 0,
    > bufferSize)
    > Loop
    >
    > If retval > 0 Then
    > ' Write the remaining buffer.
    > bw.Write(outbyte, 0, CInt(retval - 1))
    > bw.Flush()
    > End If
    > ' Close the output file.
    > bw.Close()
    > fs.Close()
    > dbHelper.CloseODBC(dcConnection)
    >
    > Return strPdfFullFileName
    > Else
    > dbHelper.CloseODBC(dcConnection)
    > Return Nothing
    > End If
    > End Using
    >
    > End Function

      My System SpecsSystem Spec

  3. #3


    Colbert Zhou [MSFT] Guest

    RE: Binary Writer generating empty files one one server but not on oth

    Hello flutophilus,

    Yes. The codes look all right. Besides Gregory's suggestions, may I ask the
    following questions regarding to the issue,

    1. Do we have a chance to do a line stepping debug? If yes, I think we need
    to make sure all the codes are executed, as well as the pdf retrieved from
    the database is not null. If we cannot, can we modify the codes to log the
    application's executing status.
    2. Have you tried to write some codes to test whether the StringWriter or
    TextWriter works in that specified server?
    3. If we use the Process Monitor and run our application. Does it monitor
    and record something failed? To download the tool Process Monitor, please
    visit http://technet.microsoft.com/en-us/s.../bb896645.aspx

    We are looking forward your reply. Have a nice day!

    Best regards,
    Colbert Zhou (colbertz @online.microsoft.com, remove 'online.')
    Microsoft Online Community Support

    Delighting our customers is our #1 priority. We welcome your comments and
    suggestions about how we can improve the support we provide to you. Please
    feel free to let my manager know what you think of the level of service
    provided. You can send feedback directly to my manager at:
    msdnmg@xxxxxx.

    ==================================================
    Get notification to my posts through email? Please refer to
    http://msdn.microsoft.com/en-us/subs...#notifications.

    Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
    where an initial response from the community or a Microsoft Support
    Engineer within 1 business day is acceptable. Please note that each follow
    up response may take approximately 2 business days as the support
    professional working with you may need further investigation to reach the
    most efficient resolution. The offering is not appropriate for situations
    that require urgent, real-time or phone-based interactions or complex
    project analysis and dump analysis issues. Issues of this nature are best
    handled working with a dedicated Microsoft Support Engineer by contacting
    Microsoft Customer Support Services (CSS) at
    http://support.microsoft.com/select/...tance&ln=en-us.
    ==================================================
    This posting is provided "AS IS" with no warranties, and confers no rights.


      My System SpecsSystem Spec

  4. #4


    Colbert Zhou [MSFT] Guest

    RE: Binary Writer generating empty files one one server but not on oth

    Hello flutophilus ,

    I am writing to check the status of the issue on your side. Could you
    please let me know if the suggestion heps to narrow down the problem? If
    you need any future assistance, please feel free to let me know. I will be
    more than happy to give follow up support.

    Have a great day!

    Best regards,
    Colbert Zhou (colbert@xxxxxx, remove 'online.')
    Microsoft Online Community Support

    =================================================
    Delighting our customers is our #1 priority. We welcome your comments and
    suggestions about how we can improve the support we provide to you. Please
    feel free to let my manager know what you think of the level of service
    provided. You can send feedback directly to my manager at:
    msdnmg@xxxxxx.

    This posting is provided "AS IS" with no warranties, and confers no rights.
    =================================================


      My System SpecsSystem Spec

Binary Writer generating empty files one one server but not on oth problems?

Similar Threads
Thread Thread Starter Forum Replies Last Post
msinfo32.exe (6.0.6002.18005) generating corrupt nfo files. Tae Song Vista General 6 11 Jun 2009
how to transfer binary data from client to server Adrian Chen .NET General 1 22 Jul 2008
Viewing Newsgroup Binary Files-decoding aoluser Vista General 2 17 Jun 2007
How to embed manifest in TCL binary? - mt.exe corrupting my binary Kshitij Vista General 0 14 Feb 2007
WLM Generating Multiple 16MB Log files in storage directory Fairy_Princess Vista mail 6 30 Jun 2006