我在DB中有一个表格,其中包含Image类型的字段。类型图像的字段存储来自附件的数据(从aspx应用程序上传),其可以是pdf,xls,msg,txt等。该表还具有存储附件名称和扩展类型的字段。
我必须将附件保存回我的文件系统,以便该表中的所有行。
我尝试过以下操作,但我没有权限执行以下
DECLARE @ObjectToken INT
EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, Content
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, 'c:/file.msg', 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken
任何人都可以告诉我如何使用C#保存文件系统的所有附件。我正在考虑使用“保存”按钮构建Windows窗体应用程序。
答案 0 :(得分:1)
如果您只想使用快速和脏方法的文件,只需使用带有ADO的VBS:
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = 1 ' = adTypeBinary
BinaryStream.Open
Dim UUIDARRAY()
Redim UUIDARRAY(1000)
strConnection = "Driver={SQL Server};Server=<servername>;Database=<databasename>;Uid=<username>;Pwd=<userpasswor>;"
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionString = strConnection
cn.Open
If cn.State = 1 Then
Set objrs=cn.execute( "Select <data> FROM <table> where <something>" )
Dim error
While not (objrs is nothing)
set field = objrs.Fields(0)
chunk_data = field.GetChunk(65536)
BinaryStream.Write chunk_data
Set objrs = objrs.NextRecordSet
Wend
cn.close
BinaryStream.SaveToFile "binarydata.bin", 2 '= adSaveCreateOverWrite'
else
wscript.echo "Could not connect"
end if
只需使用此脚本并替换所有&lt; ...&gt;有相关信息。
答案 1 :(得分:0)
在SQL服务器上执行此操作(需要sa权限)
sp_configure
‘show advanced options’, 1
GO
reconfigure
GO