it-swarm.asia

SQL Server 2008 R2: مشاكل بعد تغيير اسم الكمبيوتر

أواجه مشكلة محيرة بعد تغيير اسم الكمبيوتر لخادم بعيد يستضيف مثيل SQL Server محلي.

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

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

مهمة مجدولة لـ SQL Server "إعادة التعيين ليلاً" (0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - الحالة: فشل - تم الاستدعاء في: 2012-02-07 08:10:05 - الرسالة: فشلت المهمة. تعذر تحديد ما إذا كان المالك (Site-19\Admin) للمهمة Nightly Reset لديه حق الوصول إلى الخادم (السبب: تعذر الحصول على معلومات حول مجموعة/مستخدم Windows NT 'Site-19\Admin' ، رمز الخطأ 0x534. [SQLSTATE 42000] ( خطأ 15404)).

الآن ، "Site-19" هو اسم الكمبيوتر القديم الذي تم تغييره ، وتمت إعادة تعيين الخادم. أقوم بالاتصال يدويًا باستخدام "Site-28" ، رقم الموقع الجديد ، ويظهر لي أنني متصل بخادم SQL مع Site-28\Admin. ومع ذلك ، عندما ألقي نظرة على خصائص وظيفة الوكيل ، فإنها تُظهر المالك على أنه الموقع -19\Admin ، وعندما أحاول التصفح بحثًا عن المستخدمين لتغييرها ، لا يظهر الموقع -28\Admin كخيار ، فقط Site-19\Admin. إذا قمت بإخراج وظيفة جديدة من هذه الوظيفة وقمت بتغيير المالك يدويًا إلى "Site-28\Admin" ، يتم إنشاء الوظيفة الجديدة مع المالك "Site-19\Admin".

البحث في sys.servers (أو عبر sp_helpserver) ، لدي إدخال واحد فقط: اسم الكمبيوتر الحالي. ومع ذلك ، تقوم SELECTSERVERNAME بإرجاع اسم جهاز التطوير الأصلي (تغير اسمين قبل).

باختصار ، لا يمكنني تشغيل مهمة SQL Server Agent المهمة لأنها تنتمي إلى مستخدم لم يعد موجودًا ، ولا يمكنني معرفة كيفية تغييره أو إنشائه كمستخدم صحيح.

10
Geo Ego

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

7
Geo Ego

عندما أضفت اسم الخادم الجديد باستخدام sp_addserver ، هل تذكرت تضمين التعيين "المحلي". هذه هي العلامة التي تُحدِّث البيانات الوصفية لـSERVERNAME. المزيد من المعلومات.

sp_addserver 'servername', local
7
Brian Knight

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

declare @currentName as nvarchar(128)
declare @newName as varchar(max)
declare @serverName as varchar(max)
declare @serverInstance as varchar(max)

select  @currentName = @@SERVERNAME
select @serverInstance = cast(serverproperty('InstanceName') as varchar(max))
select  @serverName = cast(serverproperty('MachineName') as varchar(max))

set @newName = @serverName

if (@serverInstance <> '') 
begin
      set @newName = @serverName + '\' + @serverInstance
end

if (@currentName <> @newName)
Begin
      print 'sp_dropserver ''' + @currentName + '''';
      print 'go'
      print 'sp_addserver ''' + @newName + ''',local'
      print 'go'
end
else
Print 'ALL OK'
4
Mike Miller

حدثت مشكلة مشابهة: تم تغيير اسم المضيف لجهاز كمبيوتر يعمل عليه SQL Server و SQL Server Agent. تم تعيين وظائف ل. بعد إنشاء مستخدم مؤقت/تسجيل دخول إلى SSMS باستخدام هذا المستخدم المؤقت الجديد/إسقاط وإنشاء اسم تسجيل الدخول (خاص ومسؤول مسؤول النظام!)/إعادة تعيين المهام إلى تسجيل الدخول المعاد إنشاء كل شيء على ما يرام. ربما يمكنك معالجة جدول النظام ليعكس نفس التغيير ؛ لكن الطريقة المذكورة أعلاه ليست خطرة.

0
Martin Bruegger