الحد الأقصى لطول السلسلة التي يمكن إرجاعها من proc المخزن في SQL Server 2008 إلى تطبيقات .net
-
29-10-2019 - |
سؤال
أقوم بإرجاع سلسلة ثابتة من إجراء مخزن (في SQL Server 2008) على النحو التالي:
select 'abcdefgh.........xyz'
إذا كان طول السلسلة الثابتة يتجاوز أكثر من حد معين (على سبيل المثال: 8 كيلو بايت)، فسيتم إرجاع سلسلة جزئية فقط (على سبيل المثال: 7 كيلو بايت) إلى تطبيقات .net.
على الرغم من أنني حاولت بطرق مختلفة مثل تعيين سلسلة ثابتة لـ varchar(max)
واختيار المتغير لا يزال يُرجع سلسلة جزئية فقط.
يجب أن أرجع السلسلة الكاملة التي يمكن أن يصل حجمها إلى 5 ميجابايت كحد أقصى.لذلك، المخاوف الرئيسية:
- ما هو الحد الأقصى لطول السلسلة الذي يمكنني إرجاعه من إجراء مخزن
- كيفية إرجاع سلسلة بحجم 5 ميغابايت من الإجراء المخزن إلى تطبيقات .net.
أطلب من شخص ما أن يساعدني في حل هذه المشكلة.يرجى العثور على الرمز أدناه
using (SqlCommand command = new SqlCommand(Source.GetExportRecordSP, Connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@CandidateRecordID ", SqlDbType.NVarChar, 32)).Value = record;
try
{
if (Connection.State != ConnectionState.Open)
{
Connection.Open();
}
using (SqlDataReader reader = command.ExecuteReader())
{
if(reader.Read())
{
xmlRecord = new XmlDocument();
xmlRecord.LoadXml(reader.GetString(0));
}
}
}
catch (Exception Ex)
{
Logging.WriteError(string.Format("Error while retrieving the Record \"{0}\" details from Database. Exception: {1} ", Ex.ToString()));
throw;
}
}
شكرا مقدما المهوسون.
المحلول 2
شكرًا على الدعم ، وجدت إصلاحًا واحدًا لهذا في http://www.sqlservercentral.com/Forums/Topic350590-145-1.aspx
الإصلاح هو التصريح عن متغير ويجب تهيئته لإفراغ السلسلة وربطها بالسلسلة الرئيسية. Genacodicetagpre
إذا كان طول السلسلة <8000 ، فستعمل بدون الطريقة الموضحة أعلاه.
شكرًا للجميع
نصائح أخرى
نظرًا لأنه يبدو أنك لا تستخدم اتصال OLEDB (الذي يبلغ حده 8 كيلو بايت)، أعتقد أن المشكلة تكمن في رمز الإجراء الخاص بك.
أو ربما التوافق تم تعيين إصدار قاعدة البيانات الخاصة بك على شيء آخر غير SQL Server 2008 (تعذر على SQL Server 2000 إرجاع أكثر من 8 كيلو بايت باستخدام GetString()
).