التسامح مع خطأ نشاط النسخ فيAzure Data Factory ومسارات تحليلات Synapse

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

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

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

نسخ الملفات الثنائية

تدعم الخدمة سيناريوهات التسامح مع الخطأ التالية عند نسخ الملفات الثنائية. يمكنك اختيار إجهاض نشاط النسخ أو متابعة نسخ الباقي في السيناريوهات التالية:

  1. يتم حذف الملفات التي سيتم نسخها عن طريق الخدمة عن طريق تطبيقات أخرى في نفس الوقت.
  2. لا تسمح بعض المجلدات أو الملفات الخاصة بالوصول إلى الخدمة لأن قوائم التحكم بالوصول لتلك الملفات أو المجلدات تتطلب مستوى إذن أعلى من معلومات الاتصال المكونة.
  3. لن يتم التحقق من وجود ملف واحد أو أكثر ليكون متسقاً بين المصدر والمخزن الوجهة إذا قمت بتمكين إعداد التحقق من تناسق البيانات.

تفعيل التسامح مع الخطأ مع واجهة المستخدم

لتكوين التسامح مع الخطأ في نشاط النسخ (Copy) في البنية الأساسية لبرنامج ربط العمليات التجارية باستخدام واجهة المستخدم، أكمل الخطوات التالية:

  1. إذا لم تقم بإنشاء نشاط نسخ لمسار التدفق الخاص بك بالفعل، فابحث عن Copy في جزء أنشطة مسار التدفق، واسحب نشاط نسخ البيانات إلى لوحة البنية الأساسية لبرنامج ربط العمليات التجارية.

  2. حدد نشاط Copy Data الجديد على اللوحة إذا لم يكن محدداً بالفعل، وحدد علامة التبويب Settings لتكوين التسامح مع الخطأ.

    يعرض واجهة المستخدم لنشاط Copy Data في علامة التبويب

التكوين

عند نسخ الملفات الثنائية بين مخازن التخزين، يمكنك تمكين التسامح مع الخطأ على النحو الآتي:

{
  "name": "CopyActivityFaultTolerance",
  "type": "Copy",
  "typeProperties": {
    "source": {
      "type": "BinarySource",
      "storeSettings": {
        "type": "AzureDataLakeStoreReadSettings",
        "recursive": true
      }
    },
    "sink": {
      "type": "BinarySink",
      "storeSettings": {
        "type": "AzureDataLakeStoreWriteSettings"
      }
    },
    "skipErrorFile": {
      "fileMissing": true,
      "fileForbidden": true,
      "dataInconsistency": true,
      "invalidFileName": true
    },
    "validateDataConsistency": true,
    "logSettings": {
      "enableCopyActivityLog": true,
      "copyActivityLogSettings": {
        "logLevel": "Warning",
        "enableReliableLogging": false
      },
      "logLocationSettings": {
        "linkedServiceName": {
          "referenceName": "ADLSGen2",
          "type": "LinkedServiceReference"
        },
        "path": "sessionlog/"
      }
    }
  }
}
الخاصية ‏‏الوصف القيم المسموح بها المطلوب
skipErrorFile مجموعة من الخصائص لتحديد أنواع الفشل التي تريد تخطيها أثناء حركة البيانات. لا
fileMissing أحد أزواج قيمة المفاتيح ضمن حقيبة خاصية skipErrorFile لتحديد إذا ما كنت تريد تخطي الملفات التي يتم حذفها عبر تطبيقات أخرى في الوقت الذي تقوم فيه الخدمة بتنفيذ عملية النسخ.
-صواب: تريد نسخ الباقي عن طريق تخطي الملفات التي يتم حذفها عبر تطبيقات أخرى.
- خطأ: تريد إجهاض نشاط النسخ بمجرد حذف أي ملفات من مخزن المصدر في منتصف حركة البيانات.
يجب أن تدرك أن هذه الخاصية تم تعيينها إلى "صواب" كإعداد افتراضي.
True (افتراضي)
خطأ
لا
fileForbidden أحد أزواج قيم المفتاح تصنف ضمن حقيبة خاصية skipErrorFile لتحديد ما إذا كنت تريد تخطي ملفات معينة، عندما تتطلب قائمة التحكم بالوصول من تلك الملفات أو المجلدات مستوى إذن أعلى من الاتصال المكون.
-صواب: تريد نسخ الباقي عن طريق تخطي الملفات.
- خطأ: تريد إجهاض نشاط النسخ بمجرد الحصول على مشكلة الإذن على المجلدات أو الملفات.
صواب
خطأ(افتراضي)
لا
dataInconsistency أحد أزواج قيم المفتاح ضمن حقيبة خاصية skipErrorFile لتحديد ما إذا كنت تريد تخطي البيانات غير المتناسقة بين مخزن المصدر والوجهة.
-صحيح: تريد نسخ الباقي عن طريق تخطي البيانات غير المتناسقة.
- خطأ: تريد إحباط نشاط النسخة بمجرد العثور على بيانات غير متناسقة.
يجب أن تدرك هذه الخاصية صالحة فقط عند تعيين validateDataConsistency كما في "True".
صواب
خطأ(افتراضي)
لا
invalidFileName أحد أزواج قيم المفتاح ضمن حقيبة خاصية skipErrorFile لتحديد إذا ما كنت تريد تخطي ملفات معينة، عندما تكون أسماء الملفات غير صالحة لمتجر الوجهة.
-صواب: تريد نسخ الباقي عن طريق تخطي الملفات التي لها أسماء ملفات غير صالحة.
- خطأ: تريد إجهاض نشاط النسخة بمجرد أن يكون لأي ملفات أسماء ملفات غير صالحة.
كن على علم بأن هذه الخاصية تعمل عند نسخ الملفات الثنائية من أي مخزن تخزين إلى ADLS Gen2 أو نسخ الملفات الثنائية من AWS S3 إلى أي مخزن تخزين فقط.
صواب
خطأ(افتراضي)
لا
logSettings مجموعة من الخصائص التي يمكن تحديدها عندما تريد تسجيل أسماء الكائنات التي تم تخطيها.   لا
linkedServiceName الخدمة المرتبطة بتخزين Azure Blob أو Azure Data Lake Storage Gen2 لتخزين ملفات سجل جلسة العمل. أسماء AzureBlobStorageأوAzureBlobFS نوع الخدمة المرتبطة والتي تشير إلى المثيل الذي تستخدمه لتخزين ملف السجل. لا
path مسار ملفات السجل. حدد المسار الذي تستخدمه لتخزين ملفات السجل. إذا لم توفر مساراً، تقوم الخدمة بإنشاء حاوية لك. لا

إشعار

فيما يلي المتطلبات الأساسية تمكين التسامح مع الخطأ في نشاط النسخ عند نسخ الملفات الثنائية. لتخطي ملفات معينة عند حذفها من مخزن المصدر:

  • يجب أن تكون مجموعة بيانات المصدر ومجموعة بيانات المتلقي تنسيقاً ثنائياً، ولا يمكن تحديد نوع الضغط.
  • أنواع مخزن البيانات المعتمدة هي تخزينAzure Blob، وAzure Data Lake Storage Gen1، وAzure Data Lake Storage Gen2، وملفات Azure، ونظام الملفات، وFTP، وSFTP، وAmazon S3، وGoogle Cloud Storage وHDFS.
  • إذا قمت فقط بتحديد ملفات متعددة في مجموعة البيانات المصدر، والتي يمكن أن تكون مجلد أو بدل أو قائمة من الملفات، يمكن أن يتخطى نشاط النسخ ملفات الخطأ الخاصة. إذا تم تحديد ملف واحد في مجموعة البيانات المصدر المراد نسخها إلى الوجهة، فسيفشل نشاط النسخ في حالة حدوث أي خطأ.

لتخطي ملفات معينة عندما يكون الوصول إليها ممنوعاً من مخزن المصدر:

  • يجب أن تكون مجموعة بيانات المصدر ومجموعة بيانات المتلقي تنسيقاً ثنائياً، ولا يمكن تحديد نوع الضغط.
  • أنواع مخزن البيانات المعتمدة هي تخزينAzure Blob، وAzure Data Lake Storage Gen1، وAzure Data Lake Storage Gen2، وملفات Azure، ونظام الملفات، وFTP، وSFTP، وAmazon S3، وHDFS.
  • إذا قمت فقط بتحديد ملفات متعددة في مجموعة البيانات المصدر، والتي يمكن أن تكون مجلد أو بدل أو قائمة من الملفات، يمكن أن يتخطى نشاط النسخ ملفات الخطأ الخاصة. إذا تم تحديد ملف واحد في مجموعة البيانات المصدر المراد نسخها إلى الوجهة، فسيفشل نشاط النسخ في حالة حدوث أي خطأ.

لتخطي ملفات معينة عند التحقق من أنها غير متناسقة بين مخزن المصدر والوجهة:

  • يمكنك الحصول على مزيد من التفاصيل من وثيقة اتساق البيانات هنا.

مراقبة‬

مخرجات نشاط النسخ

يمكنك الحصول على عدد الملفات التي يتم قراءتها وكتابتها وتخطيها عبر إخراج كل نشاط نسخ.

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

سجل الجلسة من نشاط النسخ

إذا قمت بالتكوين لتسجيل أسماء الملفات التي تم تخطيها، يمكنك العثور على ملف السجل من هذا المسار: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv.

ملفات السجل يجب أن تكون ملفات csv. مخطط ملف السجل يكون كما يلي:

العمود ‏‏الوصف
طابع زمني الطابع الزمني عند تخطي الملف.
المستوى مستوى سجل هذا العنصر. سيكون في مستوى 'تحذير' للعنصر الذي يُظهر تخطي الملف.
OperationName نسخ سلوك تشغيلي للنشاط على كل ملف. سيكون "FileSkip" لتحديد الملف ليتم تخطيه.
OperationItem أسماء الملفات التي سيتم تخطيها.
رسالة مزيد من المعلومات لتوضيح سبب تخطي الملف.

فيما يلي مثال لملف سجل:

Timestamp,Level,OperationName,OperationItem,Message 
2020-03-24 05:35:41.0209942,Warning,FileSkip,"bigfile.csv","File is skipped after read 322961408 bytes: ErrorCode=UserErrorSourceBlobNotExist,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The required Blob is missing. ContainerName: https://transferserviceonebox.blob.core.windows.net/skipfaultyfile, path: bigfile.csv.,Source=Microsoft.DataTransfer.ClientLibrary,'." 
2020-03-24 05:38:41.2595989,Warning,FileSkip,"3_nopermission.txt","File is skipped after read 0 bytes: ErrorCode=AdlsGen2OperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ADLS Gen2 operation failed for: Operation returned an invalid status code 'Forbidden'. Account: 'adlsgen2perfsource'. FileSystem: 'skipfaultyfilesforbidden'. Path: '3_nopermission.txt'. ErrorCode: 'AuthorizationPermissionMismatch'. Message: 'This request is not authorized to perform this operation using this permission.'. RequestId: '35089f5d-101f-008c-489e-01cce4000000'..,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Operation returned an invalid status code 'Forbidden',Source=,''Type=Microsoft.Azure.Storage.Data.Models.ErrorSchemaException,Message='Type=Microsoft.Azure.Storage.Data.Models.ErrorSchemaException,Message=Operation returned an invalid status code 'Forbidden',Source=Microsoft.DataTransfer.ClientLibrary,',Source=Microsoft.DataTransfer.ClientLibrary,'." 

من السجل أعلاه، يمكن ملاحظة تخطي bigfile.csv بسبب تطبيق آخر قام بحذف هذا الملف عندما كانت تتمثل الخدمة في نسخه. وقد تم تخطي 3_nopermission.txt لأنه لا يسمح للخدمة بالوصول إليها بسبب مشكلة في الإذن.

نسخ البيانات الجدولية

السيناريوهات المدعومة

يدعم نشاط النسخ ثلاثة سيناريوهات للكشف عن البيانات الجدولية غير المتوافقة وتخطيها وتسجيلها:

  • عدم التوافق بين نوع البيانات المصدر ونوع المتلقي الأصلي.

    على سبيل المثال: نسخ البيانات من ملف CSV في تخزين Blob إلى قاعدة بيانات SQL مع تعريف مخطط يحتوي على ثلاثة أعمدة من نوع INT. يتم نسخ صفوف الملفات CSV التي تحتوي على بيانات رقمية، مثل 123,456,789 بنجاح إلى مخزن المتلقي. ومع ذلك، يتم الكشف عن الصفوف التي تحتوي على قيم غير رقمية، مثل 123,456، أ ب ج كغير متوافق ويتم تخطيه.

  • عدم تطابق في عدد الأعمدة بين المصدر والمتلقي.

    على سبيل المثال: نسخ البيانات من ملف CSV في موقع تخزين كائن ثنائي كبير الحجم إلى قاعدة بيانات SQL مع تعريف مخطط يحتوي على ستة أعمدة. يتم نسخ صفوف الملفات CSV التي تحتوي على ستة أعمدة بنجاح إلى مخزن المتلقي. يتم اكتشاف صفوف ملفات CSV التي تحتوي على أكثر من ستة أعمدة على أنها غير متوافقة وتم تخطيها.

  • خرق المفتاح الأساسي عند الكتابة إلىSQL Server / قاعدة بيانات Azure SQL / قاعدة بيانات Azure Cosmos.

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

إشعار

  • لتحميل البيانات في تحليلات Azure Synapse باستخدام PolyBase، قم بتكوين الإعدادات الأصلية للتسامح مع الخطأ في PolyBase عن طريق تحديد سياسات الرفض عبر"polyBaseSettings" في نشاط النسخ. لا يزال بإمكانك تمكين إعادة توجيه صفوف PolyBase غير المتوافقة إلى Blob أو ADLS كالمعتاد كما هو موضح أدناه.
  • لا تنطبق هذه الميزة عند تكوين نشاط النسخ لاستدعاء Amazon Redshift Unload.
  • لا تنطبق هذه الميزة عند تكوين نشاط النسخ لاستدعاء إجراء مخزن من متلقي SQL، أو استخدام Upsert لكتابة البيانات في متلقي SQL.

التكوين

يوفر المثال التالي تعريف JSON لتكوين تخطي الصفوف غير المتوافقة في نسخ النشاط:

"typeProperties": { 
    "source": { 
        "type": "AzureSqlSource" 
    }, 
    "sink": { 
        "type": "AzureSqlSink" 
    }, 
    "enableSkipIncompatibleRow": true, 
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {            
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
               "referenceName": "ADLSGen2",
               "type": "LinkedServiceReference"
            },
            "path": "sessionlog/"
        }
    } 
}, 
الخاصية ‏‏الوصف القيم المسموح بها المطلوب
enableSkipIncompatibleRow تحديد ما إذا كنت تريد تخطي صفوف غير متوافقة أثناء النسخ أم لا. صواب
خطأ (افتراضي)
لا
logSettings مجموعة من الخصائص التي يمكن تحديدها عندما تريد تسجيل الصفوف غير المتوافقة.   لا
linkedServiceName الخدمة المرتبطة بموقع تخزين Azure Blob أو Azure Data Lake Storage Gen2 لتخزين ملفات سجل جلسة العمل. أسماء AzureBlobStorageأوAzureBlobFS نوع الخدمة المرتبطة والتي تشير إلى المثيل الذي تستخدمه لتخزين ملف السجل. لا
path مسار ملفات السجل التي تحتوي على الصفوف التي تم تخطيها. حدد المسار الذي تريد استخدامه لتسجيل البيانات غير المتوافقة. إذا لم توفر مساراً، تقوم الخدمة بإنشاء حاوية لك. لا

رصد الصفوف الذي تم تخطيها

بعد اكتمال نشاط النسخ، يمكنك مشاهدة عدد الصفوف التي تم تخطيها في إخراج نشاط النسخ:

"output": {
            "dataRead": 95,
            "dataWritten": 186,
            "rowsCopied": 9,
            "rowsSkipped": 2,
            "copyDuration": 16,
            "throughput": 0.01,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "errors": []
        },

إذا قمت بتكوين لتسجيل الصفوف غير المتوافقة، يمكنك العثور على ملف السجل من هذا المسار:https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv.

ستكون ملفات السجل ملفات بتنسيق csv. مخطط ملف السجل يكون كما يلي:

العمود ‏‏الوصف
طابع زمني الطابع الزمني عند تخطي الصفوف غير المتوافقة
المستوى مستوى سجل هذا العنصر. سيكون في مستوى "التحذير" إذا كان هذا العنصر يظهر الصفوف التي تم تخطيها
OperationName نسخ سلوك تشغيلي للنشاط بكل صف. سيكون "TabularRowSkip" لتحديد أن الصف المحدد غير المتوافق قد تم تخطيه
OperationItem الصفوف التي تم تخطيها من مخزن البيانات المصدر.
رسالة مزيد من المعلومات لتوضيح سبب عدم توافق هذا الصف المحدد.

مثال على محتوى ملف السجل كما يلي:

Timestamp, Level, OperationName, OperationItem, Message
2020-02-26 06:22:32.2586581, Warning, TabularRowSkip, """data1"", ""data2"", ""data3""," "Column 'Prop_2' contains an invalid value 'data3'. Cannot convert 'data3' to type 'DateTime'." 
2020-02-26 06:22:33.2586351, Warning, TabularRowSkip, """data4"", ""data5"", ""data6"",", "Violation of PRIMARY KEY constraint 'PK_tblintstrdatetimewithpk'. Cannot insert duplicate key in object 'dbo.tblintstrdatetimewithpk'. The duplicate key value is (data4)." 

من ملف السجل عينة أعلاه، يمكنك مشاهدة صف واحد "data1، data2، data3" تم تخطيه بسبب نوع تحويل المشكلة من المصدر إلى مخزن الوجهة. صف آخر "data4، data5، data6" تم تخطيه بسبب مشكلة خرق المفاتيح الأساسية من المصدر إلى مخزن الوجهة.

نسخ البيانات الجدولية (القديمة):

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

التكوين

يوفر المثال التالي تعريف JSON لتكوين تخطي الصفوف غير المتوافقة في نسخ النشاط:

"typeProperties": {
    "source": {
        "type": "BlobSource"
    },
    "sink": {
        "type": "SqlSink",
    },
    "enableSkipIncompatibleRow": true,
    "redirectIncompatibleRowSettings": {
         "linkedServiceName": {
              "referenceName": "<Azure Storage or Data Lake Store linked service>",
              "type": "LinkedServiceReference"
            },
            "path": "redirectcontainer/erroroutput"
     }
}
الخاصية ‏‏الوصف القيم المسموح بها المطلوب
enableSkipIncompatibleRow تحديد ما إذا كنت تريد تخطي صفوف غير متوافقة أثناء النسخ أم لا. صواب
خطأ (افتراضي)
لا
redirectIncompatibleRowSettings مجموعة من الخصائص التي يمكن تحديدها عندما تريد تسجيل الصفوف غير المتوافقة.   لا
linkedServiceName الخدمة المرتبطة بموقع تخزين Azure Storage أو Azure Data Lake Store لتخزين ملفات سجل جلسة العمل. أسماء AzureStorageأوAzureDataLakeStore نوع الخدمة المرتبطة والتي تشير إلى المثيل الذي تريد استخدامه لتخزين ملف السجل. لا
path مسار ملف السجل الذي يحتوي على الصفوف التي تم تخطيها. حدد المسار الذي تريد استخدامه لتسجيل البيانات غير المتوافقة. إذا لم توفر مساراً، تقوم الخدمة بإنشاء حاوية لك. لا

رصد الصفوف الذي تم تخطيها

بعد اكتمال نشاط النسخ، يمكنك مشاهدة عدد الصفوف التي تم تخطيها في إخراج نشاط النسخ:

"output": {
            "dataRead": 95,
            "dataWritten": 186,
            "rowsCopied": 9,
            "rowsSkipped": 2,
            "copyDuration": 16,
            "throughput": 0.01,
            "redirectRowPath": "https://myblobstorage.blob.core.windows.net//myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "errors": []
        },

إذا قمت بالتكوين لتسجيل الصفوف غير المتوافقة، يمكنك العثور على ملف السجل من هذا المسار:https://[your-blob-account].blob.core.windows.net/[path-if-configured]/[copy-activity-run-id]/[auto-generated-GUID].csv.

ملفات السجل يمكن أن تكون ملفات csv فقط. سيتم تسجيل البيانات الأصلية التي يتم تخطيها بفاصلة كمحدد عمود إذا لزم الأمر. نضيف عمودين آخرين "ErrorCode" و"ErrorMessage" بالإضافة إلى البيانات المصدر الأصلي في ملف السجل، حيث يمكنك مشاهدة السبب الجذري لعدم التوافق. سيتم اقتباس رمز الخطأ وErrorMessage عبر علامات الاقتباس المزدوجة.

مثال على محتوى ملف السجل كما يلي:

data1, data2, data3, "UserErrorInvalidDataValue", "Column 'Prop_2' contains an invalid value 'data3'. Cannot convert 'data3' to type 'DateTime'."
data4, data5, data6, "2627", "Violation of PRIMARY KEY constraint 'PK_tblintstrdatetimewithpk'. Cannot insert duplicate key in object 'dbo.tblintstrdatetimewithpk'. The duplicate key value is (data4)."

راجع مقالات نشاط النسخ الأخرى: