it-swarm.asia

كيفية إضافة مسؤول النظام إلى المستخدم في SQL Server 2008 في حالة عدم وجود حسابات مسؤول النظام

لدي مثيل SQL Server 2008 قيد التشغيل. للأسف أثناء الاختبار ، ألغيت تحديد حقوق مسؤول النظام لتسجيل الدخول ولا يمكنني قراءتها الآن (لأنني لا أمتلك حقوق مسؤول النظام).

لا توجد حسابات مسؤول نظام أخرى للمثيل باستثناء SA.

لقد تم إعدادها لمصادقة Windows فقط ، لذا قمت باختراق وضع LoginMode في التسجيل إلى 2 حتى أتمكن من تسجيل الدخول كـ SA باستخدام مصادقة Sql. يؤدي هذا بالفعل إلى تعيين وضع تسجيل الدخول إلى مختلط ، ولكن = SA يتم تعطيل المستخدم افتراضيًا ولا يمكنني إعادة تمكينه لأنني لا أمتلك حقوق مسؤول النظام.

كيف يمكنني تمكين تسجيل الدخول SA حتى أتمكن من الدخول وإعادة تعيين مسؤول النظام إلى حسابي العادي؟ هل هناك إعداد تسجيل لهذا أيضًا أم أنه مخزن في قاعدة البيانات الرئيسية؟

25
Mark D Jackson

حتى أكثر أنواع خيارات uber-admin من خيار الاتصال Dedicated Administrator Connection ( DAC ) ، والتي يمكن استخدامها فقط كاتصال محلي ، وتتيح لك التراجع عن جميع الأنواع الشر ، لا يزال يتطلب أوراق اعتماد تسجيل الدخول. لذلك لا أعتقد أن هناك طريقة رسمية للقيام بذلك.

قد تكون أسرع طريقة لإحياء هذا النظام هي إيقاف تشغيل SQL Server ، ونسخ ملفات قاعدة بيانات المستخدم في مكان آمن ، وإلغاء التثبيت ، وإعادة التثبيت (مع التأكد من أن حزمة الخدمة تصل إلى المستوى الذي كنت عليه سابقًا على الأقل) ، ونسخ الملفات مرة أخرى وإرفاقها قواعد البيانات. (لست متأكدًا من أن النسخ/النسخ مطلوب ، ولكن فقط لكي تكون آمنًا ...).

ستظل بحاجة إلى استعادة كائنات على مستوى الخادم يدويًا (مثل عمليات تسجيل الدخول)

11
Damien_The_Unbeliever

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

تنزيل أدوات PSexec من هنا . ضع هذا على الخادم ثم في أمر موجه تنفيذ هذا الأمر: psexec -i -s SSMS.exe، أو sqlwb.exe

سيؤدي هذا إلى فتح SSMS كحساب النظام الذي لديه وصول مسؤول النظام إلى مثيل SQL Server. يتم ذلك أثناء تثبيت SQL Server ، ولكن سمعت أن هذا لن يكون كذلك مع SQL 2012.

27
user507

يختلف SQL Server 2008 عن SQL Server 2005 ، حيث لم يعد المسؤولون المحليون يرثون دور خادم sysadmin الثابت.

عند تثبيت SQL Server 2008 ، يطالبك بتعيين حساب لإضافته إلى دور مسؤول النظام. إذا تلقيت الصندوق بعد تثبيت البرنامج ، فلن يساعدك ذلك كثيرًا.

لحسن الحظ ، احتفظت Microsoft بوظيفة 2005 عند تشغيل SQL Server في وضع المستخدم المفرد. إليك ما تفعله:

  • قم بتسجيل الدخول إلى الخادم كمسؤول windows windows
  • إيقاف خادم SQL
  • في موجه الأوامر ، في الدليل حيث يوجد sqlservr.exe ، اكتب sqlservr.exe -m ، واضغط على Enter - سيؤدي ذلك إلى بدء تشغيل SQL Server في وضع المستخدم المفرد
  • افتح SQL Server EM ، وأضف حسابك إلى دور خادم sysadmin الثابت
  • إيقاف خادم SQL ، أعد التشغيل (في سطر الأوامر أو في SQL Server EM
14
Brian Sullivan

هذا سؤال عظيم وسيوجد شخص ما في هذا الوضع ويحتاج إلى إنقاذ منه ..

كل الفضل يعود إلى codykonior

إذا كنت مسؤول Windows على الخادم ، فيمكنك حينئذٍ استخدام برنامج PowerShell v2 للحصول على إمكانية الوصول دون انقطاع أو خطر معروف. يتم ذلك عن طريق تكرار رمز تسجيل الدخول لخدمة SQL Server حتى إذا كان يعمل تحت حساب خدمة AD أو حساب افتراضي أو محمي بمعرف SID لكل خدمة

سيقوم البرنامج النصي أدناه بتكرار خدمات SQL Server وسيضيفك إلى دور مسؤول النظام في أي مكان مفقود:

#GITHUB Link : https://github.com/codykonior/HackSql
$userName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

$services = Get-Service | Where { ($_.Name -eq 'MSSQLSERVER' -or $_.Name -like 'MSSQL$*') -and $_.Status -eq "Running" }
foreach ($service in $services) {
    if ($service.Name -eq "MSSQLSERVER") {
        $sqlName = ".\"
    } else {
        $sqlName = ".\$($service.Name.Substring(6))"
    }

    Write-Host "Attempting $sqlName"
    $serviceProcess = Get-WmiObject -Class Win32_Service -Filter "Name = '$($service.Name)'"

    Invoke-TokenManipulation -ProcessId $serviceProcess.ProcessID -ImpersonateUser | Out-Null
    $impersonatedUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    Write-Host "Service $($service.Name) on PID $($serviceProcess.ProcessID) will connect to $sqlName as $impersonatedUser"

    $sqlConnection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$sqlName;Trusted_Connection=True")
    $sqlConnection.Open()
    $sqlCommand = New-Object System.Data.SqlClient.SqlCommand("If Not Exists (Select Top 1 0 From sys.server_principals Where name = '$userName')
Begin
    Create Login [$userName] From Windows
End

If Not Exists (Select Top 1 0 From master.sys.server_principals sp Join master.sys.server_role_members srp On sp.principal_id = srp.member_principal_id Join master.sys.server_principals spr On srp.role_principal_id = spr.principal_id Where sp.name = '$userName' And spr.name = 'sysadmin')
Begin
    Exec sp_addsrvrolemember '$userName', 'sysadmin'
End", $sqlConnection)
    $sqlCommand.ExecuteNonQuery() | Out-Null
    $sqlConnection.Close()
    Invoke-TokenManipulation -RevToSelf | Out-Null
}
5
Kin Shah

لا يزال بإمكانك إنشاء تسجيل دخول باستخدام وصول 'sysadmin'. شكرًا لمهندس البيانات الرئيسي في Microsoft (Saleem Hakani) الذي قام بتأليف نصائح وحيل SQL Server أدناه.

لقد وجدت هذا بينما كنت عالقًا في حالة مماثلة عندما نسيت كلمة مرور sa لجهاز الاختبار الخاص بي.

الارتباط: https://blogs.technet.Microsoft.com/sqlman/2011/06/14/tips-tricks-you-have-lost-access-to-sql-server-now-what/ =

فيما يلي الخطوات التي ستحتاج إلى تنفيذها:

  1. ابدأ تشغيل مثيل SQL Server باستخدام وضع المستخدم الفردي (أو الحد الأدنى من التكوين الذي سيضع أيضًا SQL Server في وضع المستخدم الفردي)

من الأمر موجه الأوامر: SQLServr.Exe –m (أو SQLServr.exe –f)

ملاحظة: إذا لم يكن مجلد Binn في المسار البيئي ، فستحتاج إلى الانتقال إلى مجلد Binn.

(عادة ما يكون مجلد Binn موجودًا في: C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn)

  1. بمجرد بدء تشغيل خدمة SQL Server في وضع المستخدم الفردي أو مع الحد الأدنى من التكوين ، يمكنك الآن استخدام الأمر SQLCMD من الأمر موجه للاتصال بـ SQL Server وتنفيذ العمليات التالية لإضافة نفسك مرة أخرى كمسؤول على مثيل SQL Server.

SQLCMD –S

سيتم الآن تسجيل الدخول إلى SQL Server كمسؤول.

  1. بمجرد تسجيل الدخول إلى SQL Server باستخدام SQLCMD ، قم بإصدار الأوامر التالية لإنشاء حساب جديد أو إضافة تسجيل دخول موجود إلى دور خادم SYSADMIN.

لإنشاء تسجيل دخول جديد وإضافة تسجيل الدخول هذا إلى دور خادم SYSADMIN:

1> أنشئ تسجيل الدخول "" باستخدام PASSWORD = ""

2> اذهب

1> SP_ADDSRVROLEMEMBER "" ، "SYSADMIN"

2> اذهب

لإضافة تسجيل دخول موجود إلى دور خادم SYSADMIN ، نفّذ ما يلي:

1> SP_ADDSRVROLEMEMBER "" ، "SYSADMIN"

ستعمل العملية المذكورة أعلاه على منح امتيازات SYSADMIN لتسجيل الدخول الحالي أو لتسجيل الدخول الجديد.

  1. بمجرد تنفيذ الخطوات المذكورة أعلاه بنجاح ، فإن الخطوة التالية هي إيقاف وبدء تشغيل خدمات SQL Server باستخدام خيارات بدء التشغيل العادية. (هذه المرة لن تحتاج –f أو –m)
2
Ramakant Dadhichi

يمكنك القيام بما يلي:
1) إنشاء حساب مستخدم Windows بامتيازات إدارية
2) تسجيل الدخول في النوافذ باستخدام الحساب الإداري الجديد
3) افتح Studio Sql Server Mangement باستخدام مصادقة Windows
4) أنت الآن مسجّل الدخول في SQL Server كمسؤول ، حتى تتمكن من إنشاء حسابات جديدة أو تحديث مستخدم sa

0
Juan Carlos Velez