如果电脑内存够大,并且只为这一个程序服务,当然这不是问题,可大多数场景并非如此。
var file = @"a.zip"; using (var conn = new SqlConnection("Data Source=.;Integrated Security=SSPI;Initial Catalog=ABC")) { conn.Open(); var sql = "SELECT TOP 1 BulkColumn FROM OPENROWSET(BULK '" + file + "', SINGLE_BLOB) f"; using (var cmd = new SqlCommand(sql, conn)) { cmd.CommandTimeout = 0; using (var dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) { int bufferSize = 100; byte[] buffer = new byte[bufferSize]; int readBytes = 0; long index = 0; using (FileStream fs = new FileStream(@"b.zip", FileMode.Create, FileAccess.Write, FileShare.None)) { while (dr.Read()) { while ((readBytes = (int)dr.GetBytes(0, index, buffer, 0, bufferSize)) > 0) { fs.Write(buffer, 0, readBytes); index += readBytes; } } } } } }