我有這個數據庫,其中有一個表的下面,但我沒有辦法正是DeCypher它存儲的Microsoft Word 97頁中的SQL Server列中的文檔
DATA, TYPE, FILE TYPE, SIZE, DOC TYPE
0x15234324 , Word.Document.8 ,DOC, 19968, WORD.DOCUMENT.8
領域似乎包含存儲在一個Word文檔SQL Server IMAGE
列
有沒有人遇到過這個或以可讀的格式提取數據的方法?
到目前爲止,我已經嘗試使用PHP來提取文件並將其寫入word文檔,但沒有多少運氣。
更新:我現在擁有的Visual Studio Express和希望的方式來提取這些數據,並保存到word文檔
UPDATE2:這是我在VB中辛勤
Imports System.Data.SqlClient
Imports System.IO
Public Class Form1
Private Shared Function RetrieveFile(ByVal filename As String) As Byte()
Dim connection As New SqlConnection("Server=sqlsrv;database=database;Trusted_Connection=Yes;")
Dim command As New SqlCommand("select data from objects where object_ref in (select data from parts where object_ref =239804)", connection)
command.Parameters.AddWithValue("test", filename)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader(System.Data.CommandBehavior.SequentialAccess)
reader.Read()
Dim memory As New MemoryStream()
Dim startIndex As Long = 0
Const ChunkSize As Integer = 256
While True
Dim buffer As Byte() = New Byte(ChunkSize - 1) {}
Dim retrievedBytes As Long = reader.GetBytes(1, startIndex, buffer, 0, ChunkSize)
memory.Write(buffer, 0, CInt(retrievedBytes))
startIndex += retrievedBytes
If retrievedBytes <> ChunkSize Then
Exit While
End If
End While
connection.Close()
Dim data As Byte() = memory.ToArray()
memory.Dispose()
Return data
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "Doc File|*.doc"
saveFileDialog1.Title = "Save an doc File"
saveFileDialog1.ShowDialog()
If saveFileDialog1.FileName <> "" Then
Dim fs As New System.IO.FileStream(saveFileDialog1.FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)
Dim data As Byte() = RetrieveFile("test.doc")
fs.Write(data, 0, data.Length)
fs.Flush()
fs.Close()
End If
End Sub
End Class
你也許包含在'DATA'字節只是存儲在文件系統和然後用MS Word打開該文件。 – 2011-05-06 12:37:09
很酷 - 如何從SQL服務器提取這些數據?因爲字符串接縫在SQL管理查詢結果窗口中是短的 – Rob 2011-05-06 12:38:48
是的,SSMS將始終截斷爲最大值。長度 - 您需要使用一些代碼從SQL Server中獲取它。看到這個[其他SO問題](http://stackoverflow.com/questions/2818557/are-there-any-utilities-to-extract-binary-data-from-sql-server)上類似的話題 - 也許這'我會幫你 – 2011-05-06 12:39:43