أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

إن المستعرض الذي تستخدمه غير معتمد

إنك تحتاج إلى تحديث المستعرض لاستخدام الموقع.

التحديث إلى أحدث إصدار من Internet Explorer

FIX: رسالة خطأ عند تشغيل استعلام في SQL Server 2005: "لا يمكن إدراج صف المفاتيح المكررة في كائن <tablename>مع فهرس فريد <indexname>"

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية937533
خطأ: # 50001287 (الإصلاح العاجل SQL)
الأعراض
في SQL Server 2005 تتلقى رسالة الخطأ التالية عند تشغيل استعلام:
2601 خطأ: الخطورة: حالة 14 ،: 1
لا يمكن إدراج صف المفاتيح المكررة في كائن TableName مع فهرس فريد IndexName.
تحدث هذه المشكلة عندما يحتوي خطة التنفيذ الذي تم إنشاؤه الاستعلام على عامل تشغيل التخزين جدول يحتوي على أكثر من 2,147,483,648 الصفوف الإدخال.
السبب
تحدث هذه المشكلة نظرًا لأن عامل تشغيل التخزين جدول إنشاء فهرس متفاوت المسافات فريد على عمود عند إنشاء خطة تنفيذ الاستعلام. عندما يتجاوز عدد الصفوف الإدخال 2,147,483,648 ، يعمل uniquifier فهرس متفاوت المسافات. ولذلك، تظهر رسالة خطأ تشير إلى أنه لا يمكن إدراج صفوف مكررة.
الحل

معلومات التحديث التراكمي

تم إصدار الإصلاح الخاص بهذه المشكلة أولاً في التحديث التراكمي 2. لمزيد من المعلومات حول كيفية الحصول على حزمة التحديث التراكمي هذه لـ SQL Server 2005 المزود بحزمة الخدمة SP2 انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
936305حزمة التحديث التراكمي 2 SQL Server 2005 المزود بحزمة الخدمة SP2
ملاحظة لأن وبالطريقة تراكمية، يتضمن كل إصدار إصلاح جديد كافة الإصلاحات العاجلة وأصلح كافة تصحيحات الأمان التي تم تضمينها مع SQL Server 2005 السابقة الإصدار. توصي Microsoft مراعاة تطبيق أحدث إصدار الإصلاح الذي يحتوي على هذا الإصلاح العاجل. لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
937137بناء SQL Server 2005 التي تم إصدارها بعد إصدار SQL Server 2005 المزود بحزمة الخدمة SP2
يتم إنشاء الإصلاحات العاجلة Microsoft SQL Server 2005 حزم خدمة SQL Server معينة. يجب تطبيق الإصلاح عاجل SQL Server 2005 المزود بحزمة الخدمة SP2 إلى تثبيت SQL Server 2005 المزود بحزمة الخدمة SP2. بشكل افتراضي، يتم تضمين الإصلاحات الجديدة المتوفرة في حزمة خدمة لـ SQL Server في حزمة خدمة لـ SQL Server التالية.
الحل البديل
كمحاولة للتغلب على هذه المشكلة استخدم إحدى الطرق التالية لتجنب عامل تشغيل التخزين جدول.

ملاحظة استخدام الطرق التالية استعلام المذكور في قسم "خطوات إعادة إنشاء هذه المشكلة" في قسم "مزيد من المعلومات" كمثال لإيجاد حل بديل.
  • استخدام المجموعات مميزة و غير مميزة في استعلامات منفصلة.

    على سبيل المثال، في استعلام المثال في قسم "مزيد من المعلومات" تقسيم الاستعلام إلى جزئين كما يلي:
    --Part 1select t1.c1,sum(t2.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1--Part 2select t1.c1 , count(distinct t1.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1
  • استخدم جدول مؤقت:
    1. إنشاء جدول مؤقت.
    2. إدراج الصفوف التي تحتوي على تجميع في الجدول المؤقت.
    3. هل المجموعات مقابل الجدول المؤقت.
  • حاول استخدام بعض تلميحات الاستعلام أو تلميحات للمحسن الفهرس إلى إعادة كتابة الاستعلام. يمكنك العثور على طريقة لتجنب عامل تشغيل التخزين جدول.
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "تنطبق على".
معلومات أخرى
يعمل هذا الإصلاح العاجل على حل منطق الكشف عن هذه المشكلة ثم رفع رسالة خطأ مناسبة في هذا الموقف. بعد تطبيق هذا الإصلاح العاجل تظهر رسالة الخطأ التالية عند مواجهة هذه المشكلة:
تم تجاوز الحد الأقصى قبل النظام فريد لقيمة مجموعة مكررة لفهرس مع معرف القسم ‘ PartitionID ’. إفلات ثم إعادة إنشاء الفهرس قد حل هذه; وإلا، استخدم مفتاح مقاطع تخزين آخر.

خطوات إعادة إنشاء هذه المشكلة

  1. فتح Studio إدارة ملقم SQL ثم قم بتوصيل إلى مثيل SQL Server 2005.
  2. قم بإنشاء استعلام جديد ثم قم بتشغيل العبارات التالية:
    if exists(select name from sysobjects where name=N't1' and xtype='U')drop table t1gocreate table t1( c1 bigint identity,c2 char (10),c3 int ,c4 int)goif exists(select name from sysobjects where name=N't2' and xtype='U')drop table t2gocreate table t2( c1 bigint identity,c2 char (10),c3 int ,c4 int)go
  3. تشغيل العبارات التالية:
    set showplan_all ongoselect t1.c1,sum(t2.c3), count(distinct t1.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1goset showplan_all offgo
When you complete these steps, you receive the following execution plan:
StmtText                                                                                                                                                                              StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                              DefinedValues                                                                           EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                                                                                          Warnings Type                                                             Parallel EstimateExecutions------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- ------------- ------------- ------------- ----------- ---------------- --------------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------- -------- ------------------select t1.c1,sum(t2.c3), count(distinct t1.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1                                                                                1           1           0           NULL                           NULL                           1                                                                                                                                     NULL                                                                                    1             NULL          NULL          NULL        0.06636031       NULL                                                                                                NULL     SELECT                                                           0        NULL  |--Compute Scalar(DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]))                                                                                                         1           2           1           Compute Scalar                 Compute Scalar                 DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1])                                                                              [Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]                                         1             0             1E-07         23          0.06636031       [Test2].[dbo].[t1].[c1], [Expr1008], [Expr1009]                                                     NULL     PLAN_ROW                                                         0        1       |--Merge Join(Inner Join, MANY-TO-MANY MERGE:([Test2].[dbo].[t1].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t1].[c1] = [Test2].[dbo].[t1].[c1]))                1           3           2           Merge Join                     Inner Join                     MANY-TO-MANY MERGE:([Test2].[dbo].[t1].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t1].[c1] = [Test2].[dbo].[t1].[c1])  NULL                                                                                    1             0.000313      0.00564738    23          0.06636021       [Expr1008], [Expr1009], [Test2].[dbo].[t1].[c1]                                                     NULL     PLAN_ROW                                                         0        1            |--Compute Scalar(DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]))                                                                                               1           4           3           Compute Scalar                 Compute Scalar                 DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1])                                                                              [Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]                                         1             0             1E-07         19          0.03019842       [Expr1009], [Test2].[dbo].[t1].[c1]                                                                 NULL     PLAN_ROW                                                         0        1            |    |--Compute Scalar(DEFINE:([Expr1009]=CONVERT_IMPLICIT(int,[Expr1019],0)))                                                                                            1           5           4           Compute Scalar                 Compute Scalar                 DEFINE:([Expr1009]=CONVERT_IMPLICIT(int,[Expr1019],0))                                                                                [Expr1009]=CONVERT_IMPLICIT(int,[Expr1019],0)                                           1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1009]                                                                 NULL     PLAN_ROW                                                         0        1            |         |--Stream Aggregate(GROUP BY:([Test2].[dbo].[t1].[c1]) DEFINE:([Expr1019]=COUNT([Test2].[dbo].[t1].[c3])))                                                      1           6           5           Stream Aggregate               Aggregate                      GROUP BY:([Test2].[dbo].[t1].[c1])                                                                                                    [Expr1019]=COUNT([Test2].[dbo].[t1].[c3])                                               1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1019]                                                                 NULL     PLAN_ROW                                                         0        1            |              |--Sort(DISTINCT ORDER BY:([Test2].[dbo].[t1].[c1] ASC, [Test2].[dbo].[t1].[c3] ASC))                                                                      1           7           6           Sort                           Distinct Sort                  DISTINCT ORDER BY:([Test2].[dbo].[t1].[c1] ASC, [Test2].[dbo].[t1].[c3] ASC)                                                          NULL                                                                                    1             0.01126126    0.000100019   19          0.03019721       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3]                                                    NULL     PLAN_ROW                                                         0        1            |                   |--Table Spool                                                                                                                                        1           9           7           Table Spool                    Eager Spool                    NULL                                                                                                                                  NULL                                                                                    1             0.006579998   5.041407E-05  31          0.01883594       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3], [Test2].[dbo].[t2].[c3]                           NULL     PLAN_ROW                                                         0        1            |                        |--Hash Match(Inner Join, HASH:([Test2].[dbo].[t2].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t2].[c1]=[Test2].[dbo].[t1].[c1]))  1           10          9           Hash Match                     Inner Join                     HASH:([Test2].[dbo].[t2].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t2].[c1]=[Test2].[dbo].[t1].[c1])                  NULL                                                                                    1             0             0.01777693    31          0.02434613       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3], [Test2].[dbo].[t2].[c1], [Test2].[dbo].[t2].[c3]  NULL     PLAN_ROW                                                         0        1            |                             |--Table Scan(OBJECT:([Test2].[dbo].[t2]))                                                                                                  1           11          10          Table Scan                     Table Scan                     OBJECT:([Test2].[dbo].[t2])                                                                                                           [Test2].[dbo].[t2].[c1], [Test2].[dbo].[t2].[c3]                                        1             0.003125      0.0001581     19          0.0032831        [Test2].[dbo].[t2].[c1], [Test2].[dbo].[t2].[c3]                                                    NULL     PLAN_ROW                                                         0        1            |                             |--Table Scan(OBJECT:([Test2].[dbo].[t1]))                                                                                                  1           12          10          Table Scan                     Table Scan                     OBJECT:([Test2].[dbo].[t1])                                                                                                           [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3]                                        1             0.003125      0.0001581     19          0.0032831        [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3]                                                    NULL     PLAN_ROW                                                         0        1            |--Compute Scalar(DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]))                                                                                               1           26          3           Compute Scalar                 Compute Scalar                 DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1])                                                                              [Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]                                         1             0             1E-07         19          0.03019842       [Expr1008], [Test2].[dbo].[t1].[c1]                                                                 NULL     PLAN_ROW                                                         0        1                 |--Compute Scalar(DEFINE:([Expr1008]=CASE WHEN [Expr1020]=(0) THEN NULL ELSE [Expr1021] END))                                                                        1           27          26          Compute Scalar                 Compute Scalar                 DEFINE:([Expr1008]=CASE WHEN [Expr1020]=(0) THEN NULL ELSE [Expr1021] END)                                                            [Expr1008]=CASE WHEN [Expr1020]=(0) THEN NULL ELSE [Expr1021] END                       1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1008]                                                                 NULL     PLAN_ROW                                                         0        1                      |--Stream Aggregate(GROUP BY:([Test2].[dbo].[t1].[c1]) DEFINE:([Expr1020]=COUNT_BIG([Test2].[dbo].[t2].[c3]), [Expr1021]=SUM([Test2].[dbo].[t2].[c3])))         1           28          27          Stream Aggregate               Aggregate                      GROUP BY:([Test2].[dbo].[t1].[c1])                                                                                                    [Expr1020]=COUNT_BIG([Test2].[dbo].[t2].[c3]), [Expr1021]=SUM([Test2].[dbo].[t2].[c3])  1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1020], [Expr1021]                                                     NULL     PLAN_ROW                                                         0        1                           |--Sort(ORDER BY:([Test2].[dbo].[t1].[c1] ASC))                                                                                                            1           29          28          Sort                           Sort                           ORDER BY:([Test2].[dbo].[t1].[c1] ASC)                                                                                                NULL                                                                                    1             0.01126126    0.000100019   19          0.03019721       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t2].[c3]                                                    NULL     PLAN_ROW                                                         0        1                                |--Table Spool                                                                                                                                        1           31          29          Table Spool                    Eager Spool                    NULL                                                                                                                                  NULL                                                                                    1             0.006579998   5.041407E-05  31          0.01883594       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3], [Test2].[dbo].[t2].[c3]                           NULL     PLAN_ROW                                                         0        1
إذا كان أحد الجداول اختبار لدى صفوف أكثر من 2,147,483,648 تواجه هذه المشكلة.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 937533 - آخر مراجعة: 08/14/2007 23:24:33 - المراجعة: 1.4

  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • kbmt kbsql2005engine kbexpertiseadvanced kbfix kbpubtypekc kbqfe KB937533 KbMtar
تعليقات
/c1.microsoft.com/c.gif?DI=4050&did=1&t=">did=1&t=">html>