FIX: فشل إرسال تقرير صيانة بواسطة البريد الإلكتروني إلى عامل في مخطط الصيانة

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

279867
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الخطأ رقم: 351140 (SHILOH_BUGS)
الأعراض
يتضمن "مخطط صيانة قاعدة البيانات" SQL Server خيارًا لإرسال تقرير صيانة (وهو ملف يحتوي على نتائج تنفيذ خطة الصيانة) عن طريق البريد الإلكتروني إلى عامل تشغيل المعرفة مسبقاً على الملقم. قد يفشل إرسال بالبريد الإلكتروني ملف التقرير الصيانة عامل التشغيل مع رسالة الخطأ التالية التي يمكن العثور على تقرير صيانة للحصول على "تخطيط صيانة قاعدة البيانات":
خطأ 18025: [Microsoft] [ODBC SQL Server تشغيل] [SQL Server] xp_sendmail: فشلت مع الخطأ البريد 0x80004005
لا يؤثر هذا الخطأ الإعلام عن حالة المهمة; يتم عرض المهمة نفسها كما الناجحة.
السبب
فشل xp_sendmail توسيع الإجراء المخزن بخطأ أعلاه عند محاولة إرسال ملف مفتوح كمرفق بريد إلكتروني. تنفيذ "خطة صيانة" Sqlmaint.exe ثم يكتب الإخراج إلى ملف التقرير. يتم أيضًا تسجيل الخطوة الأخيرة في "صيانة مخطط" ، وهو لإرسال بريد إلكتروني في التقرير. نظرًا لوجود ملف التقرير مفتوح عند محاولة إرسال مرفق فشل محاولة xp_sendmail.
الحل
لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لـ SQL Server 2000. للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
290211INF: كيفية الحصول على أحدث حزمة خدمة لبرنامج SQL Server 2000
الحل البديل
للحصول على حل هذه المشكلة راجع قسم "مزيد من المعلومات" من هذه المقالة.
تصريح
أقرت Microsoft أن هذه مشكلة في SQL Server 2000. تم تصحيح هذه المشكلة لأول مرة في SQL Server 2000 Service Pack 1.
معلومات أخرى
كمحاولة للتغلب على هذه المشكلة يمكنك تضمين البرنامج النصي أسفل كخطوة مهمة إضافية في مهمة الأخير إنشاؤها من قبل صيانة معينة "مخطط". يرسل هذا البرنامج النصي أدناه ملف التقرير الأخير لـ صيانة معينة "خطة" إلى عنوان البريد إلكتروني محدد.

لاستخدام هذا الحل البديل "، اتبع الخطوات التالية:
  1. تتعرف المهمة الأخير على "مخطط الصيانة".
  2. انقر بزر الماوس الأيمن فوق المهمة ، انقر فوق خصائص ، انقر فوق خطوات ، حدد الخطوة ثم انقر فوق تحرير.
  3. في مربع الحوار "تحرير الخطوة المهمة" ، انقر فوق علامة التبويب خيارات متقدمة.
  4. تعيين تشغيل إجراء نجاح إلى الانتقال إلى الخطوة التالية.
  5. انقر فوق موافق في مربع الحوار تحرير خطوة مهمة.
  6. انقر فوق جديد لإضافة خطوة جديد ثم ثم بتسمية الخطوة. يجب أن يكون نوعScript SQL للعمليات (TSQL) كما يجب أن تكون قاعدة البياناتالرئيسية.
  7. لصق البرنامج النصي التالي في إطار الأوامر:
    declare @planname varchar(100)declare @dir varchar(200)declare @operator varchar(50)declare @cmd varchar (200)declare @mailfilename varchar(200)declare @filenamelen int--Values set here can actually be provided as parameters to a stored procedure.--If provided as parameters to a stored procedure, rem the following select statements.--@plananme is the plan whose maintenance report is sent.--@dir is the log directory for SQL Server. It is the directory to which the --maintenance report files are written. --@operator is the email address of the person to whom the report file should be mailed.select @planname = 'Database Maintenance Plan 1'select @dir ='c:\Program Files\Microsoft SQL Server\MSSQL$SQL2K1\LOG'select @operator ='email@domain.com'--You can automatically set the above by reading various values from SQL Server.SET NOCOUNT ONIF RIGHT (@dir, 1) <> '\' beginselect @dir =@dir +'\'endSELECT @dir = 'dir /s /b '+'"'+@dir + @planname+'*.txt'+'"' +' >c:\dir.txt'create table #TMP_MAINT_FILENAMES (NAME1 varchar(8000))exec xp_cmdshell @dirBULK INSERT #TMP_MAINT_FILENAMES   FROM 'c:\dir.txt'   WITH       (         ROWTERMINATOR = '\n'      )select @mailfilename=MAX(name1) from #TMP_MAINT_FILENAMESprint 'The following file is being sent as an atachement'print @mailfilename--Set the various parameters for xp_sendmail.declare @tmpmessage varchar(300)declare @tmpsubject varchar(300)select @tmpmessage = 'This is the last maintenance report on the server for the maintenance plan '+@plannameselect @tmpsubject = 'SQL Server Maintenance Report for '+@planname--Send the last file for the maintenance plan.exec master..xp_sendmail @recipients= @operator, @subject =@tmpsubject, @message=@tmpmessage, @attachments= @mailfilename--Perform cleanup here.drop table #TMP_MAINT_FILENAMESexec master..xp_cmdshell "del c:\dir.txt"SET NOCOUNT OFF					
  8. تأكد من تعيين القيم @ planname و @ dir @ عامل تشغيل في البرنامج النصي.
  9. حفظ خطوة مهمة.
تقدم Microsoft الأمثلة البرمجية فقط دون أي ضمان التعبير عن أو ضمنية. هذا يتضمن ولكن لم يقتصر على الضمانات الضمنية الخاصة بالتجارة أو الملاءمة لغرض معين. تفترض هذه المقالة تكون مألوفة مع لغة البرمجة التي يتم شرحها مع الأدوات التي يتم استخدامها لإنشاء لتصحيح الإجراءات. يمكن لمهندسي الدعم لدى Microsoft شرح وظيفة إجراء محدد ولكن لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة.

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

خصائص

رقم الموضوع: 279867 - آخر مراجعة: 01/16/2015 21:08:40 - المراجعة: 5.2

  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB279867 KbMtar
تعليقات