الحد الأقصى لطول السلسلة التي يمكن إرجاعها من proc المخزن في SQL Server 2008 إلى تطبيقات .net

StackOverflow https://stackoverflow.com/questions/9400934

سؤال

أقوم بإرجاع سلسلة ثابتة من إجراء مخزن (في SQL Server 2008) على النحو التالي:

select 'abcdefgh.........xyz'

إذا كان طول السلسلة الثابتة يتجاوز أكثر من حد معين (على سبيل المثال: 8 كيلو بايت)، فسيتم إرجاع سلسلة جزئية فقط (على سبيل المثال: 7 كيلو بايت) إلى تطبيقات .net.

على الرغم من أنني حاولت بطرق مختلفة مثل تعيين سلسلة ثابتة لـ varchar(max) واختيار المتغير لا يزال يُرجع سلسلة جزئية فقط.

يجب أن أرجع السلسلة الكاملة التي يمكن أن يصل حجمها إلى 5 ميجابايت كحد أقصى.لذلك، المخاوف الرئيسية:

  1. ما هو الحد الأقصى لطول السلسلة الذي يمكنني إرجاعه من إجراء مخزن
  2. كيفية إرجاع سلسلة بحجم 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()).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top