إصلاح خطأ NT AUTHORITY/LOCAL SERVICE Cannot Be Found

يُعد الخطأ “NT AUTHORITY/LOCAL SERVICE cannot be found” خطأً في بيانات SQL server يحدث عادةً مع Visual Studio أو عند تنفيذ مهام معينة في إصدارات Windows Server. بينما يواجه بعض الأشخاص هذه المشكلة بعد تثبيت تطبيقات خادم جديدة أو عند تجميع تطبيق Visual Studio، يراها آخرون عند محاولة تثبيت خدمة باستخدام المثبت المتقدم.

NT AUTHORITY/LOCAL SERVICE Cannot Be Found

هناك عدة أسباب شائعة مختلفة قد تؤدي إلى ظهور خطأ NT AUTHORITYNETWORK SERVICE، وتختلف هذه الأسباب بناءً على حالة الاستخدام الخاصة بك.

في أغلب الأحيان، قد يكون مسؤول الشبكة الخاص بك قد أزال تسجيل دخول Windows المحدد لأسباب متنوعة. ونتيجة لذلك، لن تتمكن من منح صلاحية الوصول لتسجيل الدخول إلى SQL server.

سبب آخر قد ترى بسببه هذا الخطأ هو عندما تحاول إضافة تسجيل دخول جديد بنفس معرف الأمان (SID) لتسجيل دخول موجود في SQL Server. في هذه الحالة، يجب أن يظهر لك أيضًا رمز الخطأ 15401.

ومع ذلك، تم تأكيد حدوث خطأ “NT AUTHORITY/LOCAL SERVICE cannot be found” أيضًا عندما يكون تسجيل الدخول موجودًا في نطاق مختلف عن SQL server أو إذا كانت آلية حل الأسماء المحددة التي تستخدمها (WINS أو DNS أو HOSTS أو LMHOSTS) غير مهيأة بشكل صحيح.

ستجد أدناه سلسلة من الحلول المؤكدة التي استخدمها المستخدمون المتأثرون الآخرون بنجاح للوصول إلى جوهر هذه المشكلة.

1. التحقق مما إذا كان NT AUTHORITYLOCAL SERVICE موجودًا ولديه الأذونات اللازمة

قبل الانتقال إلى حلول أكثر تقنية، أول ما عليك فعله هو التأكد من أن حساب NT AUTHORITYLOCAL SERVICE موجود بالفعل على النظام الذي تحاول استخدامه.

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

سيختلف هذا الإجراء قليلاً اعتمادًا على إصدار Windows server الخاص بك، ولكن الخطوات العامة هي نفسها في كل إصدار من Windows Server.

إليك ما تحتاج إلى فعله:

  1. افتح Windows Server Essentials Dashboard.
  2. انتقل إلى شريط التنقل الرئيسي وانقر على المستخدمون.
    الوصول إلى علامة تبويب المستخدمين
  3. استعرض قائمة المستخدمين الحاليين وتحقق مما إذا كان بإمكانك العثور على إدخال باسم NT AUTHORITYLOCAL SERVICE.
    ملاحظة: إذا كان الإدخال المرتبط بـ NT AUTHORITYLOCAL SERVICE مفقودًا، فانقر على الارتباط التشعبي إضافة حساب مستخدم لفتح معالج إضافة حساب مستخدم. من هناك، اتبع التعليمات لإنشاء المستخدمين لـ NT AUTHORITYLOCAL SERVICE وتأكد من أن اصطلاح التسمية صحيح.
  4. بمجرد التأكد من وجود الحساب، دعنا نتأكد من أنه يمتلك الأذونات الضرورية. للقيام بذلك، انقر على حساب NT AUTHORITYLOCAL SERVICE ضمن المستخدمون، ثم انتقل إلى جزء المهام وانقر على الخصائص.
  5. بعد ذلك، انتقل إلى علامة التبويب عام، ثم علامة التبويب المجلدات المشتركة، ثم علامة التبويب الوصول من أي مكان وقم بتمكين كل إذن يحتاجه هذا الحساب بناءً على حالة الاستخدام الخاصة بك. تمكين الأذونات المطلوبة للحساب
  6. احفظ التغييرات وكرر الإجراء الذي كان يتسبب سابقًا في ظهور الخطأ “NT AUTHORITY/LOCAL SERVICE cannot be found”، والذي يجب أن يكون قد تم إصلاحه الآن.

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

2. إنشاء تسجيل دخول لـ SQL Server (إذا كان ذلك منطبقًا)

إذا واجهت هذا الخطأ أثناء استخدام تطبيق طبقة البيانات الخاص بـ SQL Server في مشروع Visual Studio، فمن المحتمل أنك ترى هذا الخطأ بعد إنشاء النص البرمجي الذي يضيف NT AUTHORITYLOCAL SERVICE إلى قائمة تسجيلات الدخول ضمن Server Level Objects.

إذا استخدمت النصوص البرمجية التالية لإنشاء تسجيلات الدخول وإضافتها ضمن Database Level objects، فإن هذه الطريقة قابلة للتطبيق:

CREATE LOGIN [NT AUTHORITYLOCAL SERVICE] FROM WINDOWS WITH DEFAULT_LANGUAGE=[us_english]
CREATE USER [NT AUTHORITYLOCAL SERVICE] FOR LOGIN [NT AUTHORITYLOCAL SERVICE]

في هذه الحالة، من المحتمل أنك تواجه الخطأ عند محاولة تجميع المشروع مع رسالة الخطأ “تعذر العثور على NT AUTHORITYLOCAL SERVICE لأنه غير موجود أو لم يتم منح إذن”.

إذا كان هذا السيناريو ينطبق عليك، فإن السبب وراء عدم قدرتك على إنشاء تسجيل الدخول [NT AUTHORITYLOCAL SERVICE] هو أن NT AUTHORITYLOCAL SERVICE ليس أكثر من حساب خدمة Windows مدمج في هذه الحالة. يجب أن يكون لكل خدمة في SQL Server حساب معرف أثناء التثبيت لكي تبدأ وتعمل.

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

الخدمات التي تعمل كحساب الخدمة المحلية تستخدم جلسة فارغة للوصول إلى موارد الشبكة.

هام: كن حذرًا من أن خدمات SQL Server أو SQL Server Agent لا تدعم حساب الخدمة المحلية. الاسم الكامل للحساب هو “NT AUTHORITY/LOCAL SERVICE”.

للتغلب على هذه المشكلة، ستحتاج إلى إنشاء تسجيل دخول لـ SQL Server يستخدم مصادقة Windows عبر Transact-SQL.

للقيام بذلك، ابدأ بإنشاء مستخدم في Windows، ثم افتح أمر Transact-SQL التالي باستخدام Query Editor وتأكد من أن اسم تسجيل الدخول هو نفس اسم مستخدم Windows:

CREATE LOGIN <name of Windows User> FROM WINDOWS; GO

ملاحظة: ضع في اعتبارك أن <name of Windows User> هو مجرد عنصر نائب. استبدله بالاسم الفعلي لمستخدمي Windows.

3. إضافة الأذونات الصحيحة إلى SQL (إذا كان ذلك منطبقًا)

سبب آخر قد يجعلك تواجه هذه المشكلة هو سيناريو لم تقم فيه بإضافة الأذونات الصحيحة في SQL لخدمة NT AUTHORITY/LOCAL SERVICE ومنحت التحكم في المجلد فقط.

لإصلاح هذه المشكلة، ستحتاج إلى فتح SQL Server Management Studio (Enterprise Manager) واستكشاف مثيل SQL الذي تحاول الاتصال به. من هناك، ستحتاج إلى الانتقال إلى Security > Logins وإنشاء تسجيل دخول جديد باستخدام طريقة مصادقة Windows لـ NT AUTHORITY/LOCAL SERVICE.

إليك دليل سريع حول كيفية القيام بذلك:

  1. افتح صفحة البدء واكتب ‘SSMS‘.
  2. من قائمة النتائج، حدد Microsoft SQL Server Management Studio. Open up the SQL management studio
  3. بمجرد دخولك إلى أداة Microsoft SQL Server Management Studio، انتقل إلى مثيل SQL المحدد الذي يسبب لك الخطأ.
  4. بعد الوصول بنجاح إلى مثيل SQL المحدد، استعرضه إلى Security > Logins (filtered). Accessing the logins folder
  5. انقر بزر الماوس الأيمن على العنصر الأساسي، ثم انقر على Windows Authentication.
  6. بعد ذلك، اكتب ‘NT AUTHORITY/LOCAL SERVICE’ وقم بالتأكيد لإنشاء أذونات SQL الصحيحة.
  7. تأكد من إضافة الأذونات المناسبة لهذا الحساب الجديد إذا لم تكن قد قمت بذلك بالفعل.
    ملاحظة: ارجع إلى الطريقة 1 للحصول على خطوات محددة.
  8. كرر الإجراء الذي كان يسبب المشكلة سابقًا وتحقق مما إذا تم حل المشكلة الآن.

4. إعادة بناء قاعدة بيانات SQL Server (إذا كان ذلك ممكنًا)

إذا كنت قد حاولت بالفعل تغيير المستخدم “Log on as” داخل خدمة خادم SQL إلى NT AUTHORITY/LOCAL SERVICE ولم ينجح ذلك، فقد تتمكن من حل المشكلة باستخدام Download Installer لاستخراج الاسم السداسي العشري قبل إعادة بناء قاعدة بيانات SQL ونسخ الملفات مرة أخرى.

إليك دليل سريع حول كيفية القيام بذلك:

  1. قم بتشغيل المثبت الذي تم تنزيله ودعه يستخرج الملفات في الموقع الافتراضي.
    ملاحظة: سيتم نشر الاستخراج في الدليل الجذر لمحرك أقراص نظام التشغيل الخاص بك (على الأرجح C:/) باسم سداسي عشري طويل.
  2. بمجرد اكتمال الاستخراج، خصص وقتًا لنسخ جميع الملفات إلى مجلد مختلف لمنع الإجراء التالي من مسح محتوياته.
  3. أغلق المثبت.
    ملاحظة: بمجرد قيامك بذلك، سيتم مسح محتويات المجلد السداسي العشري الذي أنشأته في الخطوة 2.
  4. اضغط على Windows key + R لفتح مربع حوار Run.
  5. بعد ذلك، اكتب ‘cmd’ واضغط على Ctrl + Shift + Enter لـ فتح موجه أوامر (Command Prompt) بصلاحيات إدارية لخادمك. افتح نافذة CMD بصلاحيات إدارية
  6. عند ظهور User Account Control (UAC)، انقر على نعم لمنح صلاحيات المسؤول.
  7. استخدم CD للانتقال إلى الموقع الذي حفظت فيه الملفات المستخرجة مسبقًا (في الخطوة 3). إليك مثال على الأمر:
    CD C:23420247290247292740

    ملاحظة: هذا مجرد مقتطف مثال. عدّل الأمر أعلاه للانتقال إلى الموقع الفعلي الذي حفظت فيه الملفات (في الخطوة 3).

  8. بمجرد وصولك إلى الموقع الصحيح، قم بتشغيل الأمر التالي لإعادة إنشاء قاعدة البيانات وإعادة بنائها:
    setup /action=RebuildDatabase /InstanceName=SQLEXPRESS /SqlSysAdminAccounts=BUILTINAdministrators
  9. أغلق موجه الأوامر (CMD) بصلاحيات إدارية وكرر الإجراء الذي كان يتسبب في ظهور خطأ ‘NT AUTHORITY/LOCAL SERVICE cannot be found’ لترى ما إذا تم حل المشكلة الآن.

5. تنظيم MachineGUID وإعادة تشغيل خدمة SQL

إذا واجهت هذا الخطأ أثناء محاولتك بدء تشغيل خادم SQL الخاص بك وبدأت المشكلة في الظهور بعد تغيير تسجيل الدخول المدمج من Local Service إلى Local System، فمن المحتمل أن تكون المشكلة ناجمة عن مفتاح سجل MachineGUID لم يعد يشير إلى المسار الصحيح.

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

إليك دليل سريع حول كيفية القيام بذلك:

  1. اضغط على مفتاح Windows + R لفتح مربع حوار تشغيل.
  2. بعد ذلك، اكتب ‘regedit’ واضغط على Ctrl + Shift + Enter لفتح محرر السجل بصلاحيات المسؤول. Opening up the Registry Editor
  3. عند ظهور نافذة التحكم في حساب المستخدم (UAC)، انقر على نعم لمنح صلاحيات المسؤول.
  4. داخل محرر السجل، استخدم الجزء الأيسر للانتقال إلى الموقع التالي:
    HKLMSOFTWAREMicrosoftCryptographyMachineGuid
  5. بمجرد وصولك إلى الموقع الصحيح، حدد المفتاح الذي يسبب المشكلة. يجب أن يحتوي على GUID الخاص بالجهاز المتأثر مع الأقواس المعقوفة (على سبيل المثال: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}).
  6. بعد تحديد الجهاز المتأثر بشكل صحيح، نحتاج إلى إنشاء نسخة احتياطية. للقيام بذلك، تأكد من تحديد مفتاح الجهاز، ثم استخدم شريط الملف في الأعلى للانتقال إلى ملف وانقر على تصدير. Exporting the file
  7. حدد موقعًا وأعطِ اسم ملف يمكن التعرف عليه وتأكد من تعيين حفظ بنوع إلى ملفات التسجيل (*.reg).
  8. أخيرًا، قبل النقر على حفظ، تأكد من تعيين نطاق التصدير إلى الفرع المحدد وأن الفرع الصحيح محدد. Exporting the specific branch
  9. انقر على حفظ لإكمال عملية النسخ الاحتياطي.
  10. بمجرد اكتمال النسخ الاحتياطي، أعد تسمية المفتاح الذي يسبب المشكلة وأزل الأقواس.
    ملاحظة: يجب أن تتغير قيمة MachineGuid من {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} إلى xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
  11. بمجرد تطبيق هذا التعديل، أغلق محرر السجل وأعد التشغيل ثم ابدأ خدمة SQL. هام: في حال لم تبدأ الخدمة على الفور، قم بإلغاء تثبيت SQL وإعادة تثبيته قبل إعادة التشغيل مرة أخرى. إذا تلقيت خطأ مختلفًا، فاستعد النسخة الاحتياطية الأصلية التي أنشأتها في الخطوة 8 وانتقل إلى الطريقة التالية أدناه.

6. تعديل تعيينات المستخدم

إذا واجهت خطأ ‘NT AUTHORITY/LOCAL SERVICE cannot be found’ عند محاولة جلب البيانات من خادم SQL الخاص بك باستخدام asp.net، فإن إحدى الطرق السريعة لإصلاح أي سبب محلي هي تعديل تعيين المستخدم (user mapping) إلى قيمه الصحيحة.

ملاحظة: هذا الإصلاح فعال في الحالات التي تستخدم فيها قاعدة بيانات محلية لـ SQL Server Management Studio وتحاول إدخال البيانات إليها باستخدام تطبيق asp.net.

إذا كنت قد تحققت جيدًا من المدخلات وجميع التعليمات البرمجية صحيحة ولكنك لا تزال تتلقى الخطأ، فاتبع الإرشادات أدناه لاستخدام SQL Server Management Studio للوصول إلى صفحة Logins وتعديل تعيينات المستخدم (User Mappings) المعينة حاليًا من شاشة Properties.

إليك دليل سريع خطوة بخطوة حول كيفية القيام بذلك:

  1. اضغط على مفتاح Start في لوحة المفاتيح، ثم اكتب ‘SSMS‘ في صفحة Start.
  2. من قائمة النتائج، حدد Microsoft SQL Server Management Studio. افتح SQL Server Management Studio
  3. بعد ذلك، قم بتسجيل الدخول إلى الخادم الذي يسبب خطأ ‘NT AUTHORITY/LOCAL SERVICE cannot be found’.
  4. انتقل إلى Security (الأمان)، ثم ادخل إلى القسم الفرعي Logins (تسجيلات الدخول).
  5. من قائمة الخيارات، انقر بزر الماوس الأيمن على NT AUTHORITYNETWORK SERVICE أو NT AUTHORITYLOCAL SERVICE (حسب حالة الاستخدام الخاصة بك) وانقر على Properties (خصائص) من قائمة السياق. الوصول إلى شاشة الخصائص لخدمة Local service
  6. بمجرد دخولك إلى شاشة Login Properties (خصائص تسجيل الدخول)، اختر User Mappings (تعيينات المستخدم) من القسم العلوي الأيسر من الشاشة.
  7. على الجانب الأيمن، ستظهر لك قائمة بـ أدوار قواعد البيانات (databases roles). تأكد من تحديد مربع الاختيار db-owner، ثم انقر على Ok (موافق).
  8. أعد تشغيل التعليمات البرمجية التي كانت تسبب المشكلة سابقًا وتحقق مما إذا تم حل المشكلة الآن.

7. منح صلاحية دور sysadmin (إذا كان ذلك منطبقًا)

في حال واجهت هذا الخطأ أثناء محاولتك الوصول إلى قاعدة بيانات لتطبيق تم إنشاؤه محليًا، فإن أول ما يجب عليك التحقق منه هو ما إذا كان التكوين الحالي يسمح لـ NT AUTHORITY/LOCAL SERVICE بالعمل ضمن دور sysadmin.

يمكنك القيام بذلك عن طريق فتح Microsoft SQL Server Management Studio وتعديل خصائص NT AUTHORITY/LOCAL Service لتمكين دور sysadmin.

إليك دليل سريع حول كيفية القيام بذلك:

  1. اضغط على مفتاح ابدأ في لوحة المفاتيح، ثم اكتب ‘SSMS‘ في صفحة ابدأ.
  2. من قائمة النتائج، حدد Microsoft SQL Server Management Studio. فتح استوديو إدارة SQL
  3. بعد ذلك، انتقل إلى الأمان وقم بتوسيع قائمة تسجيلات الدخول.
  4. انقر بزر الماوس الأيمن على NT AUTHORITY/Local System ثم انقر على خصائص من قائمة السياق.
  5. داخل شاشة الخصائص، انقر على أدوار الخادم من القائمة الجانبية اليسرى.
  6. انتقل إلى الجانب الأيمن وتأكد من تحديد المربع المرتبط بـ sysadmin. تعديل أدوار الخادم
  7. احفظ التغييرات، ثم أعد تشغيل جهازك وتحقق مما إذا تم حل المشكلة الآن.

في حال لم تتمكن من الوصول إلى Microsoft SQL Server Management Studio لأي سبب، يمكنك أيضًا تطبيق هذا الإصلاح من موجه أوامر بصلاحيات إدارية (إذا كانت صلاحيات وصولك تسمح بذلك).

إليك كيفية القيام بذلك:

  1. اضغط على مفتاح Windows + R لفتح مربع حوار تشغيل.
    بعد ذلك، اكتب ‘cmd’ واضغط على Ctrl + Shift + Enter لفتح محرر السجل بصلاحيات المسؤول. Open a CMD prompt
  2. عند ظهور مطالبة التحكم في حساب المستخدم (UAC)، انقر فوق نعم لمنح صلاحيات المسؤول.
  3. داخل موجه الأوامر الذي يعمل بصلاحيات مرتفعة، اكتب الأمر التالي (وعدّل العنصر النائب) للوصول إلى الخادم المحدد الذي يسبب المشكلة:
    sqlcmd -S (*server name*)

    ملاحظة: تأكد من تعديل *اسم الخادم* باسم الخادم الفعلي في حالتك الخاصة.

  4. بعد ذلك، اكتب الأمر التالي واضغط على Enter للوصول إلى خادم SQL على جهازك:
    select name from sys.server_principals where name = 'NT AUTHORITYSYSTEM'
  5. بعد ذلك، اكتب الأمر التالي لأخذ النتيجة واستخدامها في إجراء فرز (sortprocedure) حيث ستتم إضافة حقوق sysmin إليها:
    SP_ADDSRVROLEMEMBER 'NT AUTHORITYSYSTEM','SYSADMIN'
  6. بمجرد معالجة كلا الأمرين بنجاح، أغلق موجه الأوامر CMD الذي يعمل بصلاحيات مرتفعة وكرر الإجراء الذي كان يسبب خطأ ‘NT AUTHORITY/LOCAL SERVICE cannot be found’.

8. تغيير لغة الخادم إلى الإنجليزية (إذا كان ذلك منطبقًا)

إذا واجهت خطأ ‘NT AUTHORITY/LOCAL SERVICE cannot be found’ عند استخدام Advanced Installer لاستدعاء NT AUTHORITYLOCAL SERVICE، فقد يكون الخطأ عرضًا ناتجًا عن خلل يؤثر على الخوادم الأجنبية.

يُؤكد حدوث هذه المشكلة عندما يحاول بعض مستخدمي Advanced Installer تشغيل خدمة XUA Automation Server يدويًا عبر شاشة Service أو عندما يحاولون التشغيل يدويًا عن طريق كتابة اسم المستخدم وحده (بدون NT Authority).

ملاحظة: تحدث هذه المشكلة لأن SCM لا يدعم الأسماء المترجمة محليًا على الرغم من أن النظام الفرعي للأمان سيقوم بترجمتها. بينما ستتلقى اسمًا مترجمًا محليًا لحسابك على خادم أجنبي، يجب أن يكون الحساب NT AUTHORITYLocalService عند استخدام وظائف مثل CreateService أو ChangeServiceConfig.

إذا كان هذا السيناريو منطبقًا، فإن الحل الوحيد حتى الآن هو استخدام النسخة الإنجليزية من اصطلاح التسمية.

لذا بدلاً من استخدام الأوامر بلغة الخادم المحلية (مثل AUTORITE NTSERVICE LOCAL) استخدم المكافئ الإنجليزي (NT AUTHORITYLocalService).

Comments are closed.