मुझे SQL Server पर FILESTREAM कॉलम में बड़े डेटा की मात्रा लिखने में समस्या हो रही है। विशेष रूप से, 1.5-2 जीबी के आसपास छोटी फाइलों को ठीक से संभाला जाता है, लेकिन जब आकार 6 जीबी तक पहुंच जाता है, तो मुझे इंटरमीटेंटIOException
हस्तांतरण के अंत में .CopyTo()
पर "हैंडल अमान्य है" मिल रहा है।SQL सर्वर FILESTREAM में बड़ी फ़ाइलों को कैसे लिखें?
मैंने भाग में डेटा लिखने के बारे में सोचा है, लेकिन SQL सर्वर डेटा को जोड़ने की अनुमति देने से पहले क्षेत्र के लिए बैकिंग फ़ाइल की प्रतिलिपि बनाता है, जो बड़ी फ़ाइलों के लिए प्रदर्शन को पूरी तरह से नष्ट कर देता है।
public long AddFragment (string location , string description = null)
{
const string sql =
@"insert into [Fragment] ([Description],[Data]) " +
"values (@description,0x); " +
"select [Id], [Data].PathName(), " +
"GET_FILESTREAM_TRANSACTION_CONTEXT() " +
"from " +
"[Fragment] " +
"where " +
"[Id] = SCOPE_IDENTITY();";
long id;
using (var scope = new TransactionScope(
TransactionScopeOption.Required,
new TransactionOptions {
Timeout = TimeSpan.FromDays(1)
}))
{
using (var connection = new SqlConnection(m_ConnectionString))
{
connection.Open();
byte[] serverTx;
string serverLocation;
using (var command = new SqlCommand (sql, connection))
{
command.Parameters.Add("@description",
SqlDbType.NVarChar).Value = description;
using (var reader = command.ExecuteReader())
{
reader.Read();
id = reader.GetSqlInt64(0).Value;
serverLocation = reader.GetSqlString (1).Value;
serverTx = reader.GetSqlBinary (2).Value;
}
}
using (var source = new FileStream(location, FileMode.Open,
FileAccess.Read, FileShare.Read, 4096,
FileOptions.SequentialScan))
using (var target = new SqlFileStream(serverLocation,
serverTx, FileAccess.Write))
{
source.CopyTo (target);
}
}
scope.Complete();
}
return id;
}
शायद http://msdn.microsoft.com/en-us/library/bb933972(v=sql.105 को देखने के अपने machine.config के विन्यास की स्थापना के लिए निम्न जोड़ने) .aspx – Paparazzi
वहां एक सामान्य उदाहरण है जो फ़ील्ड में _9_ बाइट लिखता है। – chase
शायद कनेक्शन पर एक टाइमआउट। उदाहरण के लिए आपने कनेक्शन टाइमआउट बढ़ाने का प्रयास किया था। बीटीडब्ल्यू, बस सोच रहा है, आप फ़ाइलों के लिए SQL सर्वर का उपयोग क्यों कर रहे हैं? क्या यह इन दिनों SQL सर्वर पर एक आम प्रथा बन रहा है? – ziya