فرض کنید
- تمام اکانتهای مدیریتی توکار SQL Server را حذف کردهاید (یا برایتان حذف کردهاند).
- بجز کاربر SA، تمام کاربران را از نقش SYSADMIN حذف کردهاید؛ شامل تمام اکانتهای ویندوزی و همچنین خود SQL Server.
- پسورد SA را هم فراموش کردهاید یا ندارید.
خوب، الان چکار میخواهید بکنید؟!
احتمالا نصب مجدد سرور را پیشنهاد دهید یا بانک اطلاعاتی Master را بازسازی کنید که در هر دو حالت تمام تنظیمات سرور را از دست خواهید داد. روش دیگری هم بدون از دست دادن تنظیمات سرور وجود دارد که در ادامه آنرا بررسی خواهیم کرد.
افزودن یک اکانت مدیریتی جدید به SQL Server
اگر دسترسی کامل مدیریتی خود را به SQL Server از دست دادهاید باید ابتدا به آن سرور لاگین کنید؛ با این فرض که کاربر وارد شده به سیستم، جزو local administrators group است.
سپس خلاصه مواردی را که ملاحظه میکنید، اجرای سه دستور است:
الف)اجرای sqlcmd با پارامتر S و مشخص سازی وهلهی مورد نظر
البته حالت کامل آن در صورتیکه از وهلهی پیش فرض استفاده نمیکنید SQLCMD –S Server_Name\Instance_Name است. S نیز در اینجا باید با حروف بزرگ نوشته شود.
ب) create login را بر روی یکی از اکانتهای محلی سیستم اجرا کنید. مثلا MachineName\administrator یا هر اکانت موجود دیگری که لازم است. نام آن نیز باید حتما به شکل server_name\user_name باشد.
در حین استفاده از sqlcmd، هر فرمان زمانی اجرا میشود که در سطر پس از آن، یک go نوشته شده و enter شود.
ج)سپس توسط sp_addsrvrolemember به این اکانت اضافه شده، دسترسی sysadmin بدهید.
برای آزمایش آن فقط کافی است از متد is_srvrolemember برای کوئری گرفتن استفاده کنید و یا سعی کنید توسط اکانت اضافه شده، به SQL Server لاگین کنید. این اکانت اکنون در قسمت Security/logins قابل مشاهده است.
اگر نمیخواهید از اکانتهای ویندوزی استفاده کنید، create login را به نحو ذیل مقدار دهی کنید:
سپس به این کاربر اضافه شده با کلمهی عبور مشخص، توسط sp_addsrvrolemember دسترسی sysadmin بدهید.
- تمام اکانتهای مدیریتی توکار SQL Server را حذف کردهاید (یا برایتان حذف کردهاند).
- بجز کاربر SA، تمام کاربران را از نقش SYSADMIN حذف کردهاید؛ شامل تمام اکانتهای ویندوزی و همچنین خود SQL Server.
- پسورد SA را هم فراموش کردهاید یا ندارید.
خوب، الان چکار میخواهید بکنید؟!
احتمالا نصب مجدد سرور را پیشنهاد دهید یا بانک اطلاعاتی Master را بازسازی کنید که در هر دو حالت تمام تنظیمات سرور را از دست خواهید داد. روش دیگری هم بدون از دست دادن تنظیمات سرور وجود دارد که در ادامه آنرا بررسی خواهیم کرد.
افزودن یک اکانت مدیریتی جدید به SQL Server
اگر دسترسی کامل مدیریتی خود را به SQL Server از دست دادهاید باید ابتدا به آن سرور لاگین کنید؛ با این فرض که کاربر وارد شده به سیستم، جزو local administrators group است.
C:\>sqlcmd -S . 1> create login [MachineName\TestUser] from windows; 2> go 1> exec sp_addsrvrolemember 'MachineName\TestUser','sysadmin' 2> go 1> select is_srvrolemember('sysadmin', 'MachineName\TestUser') 2> go ----------- 1 (1 rows affected) 1>
الف)اجرای sqlcmd با پارامتر S و مشخص سازی وهلهی مورد نظر
البته حالت کامل آن در صورتیکه از وهلهی پیش فرض استفاده نمیکنید SQLCMD –S Server_Name\Instance_Name است. S نیز در اینجا باید با حروف بزرگ نوشته شود.
ب) create login را بر روی یکی از اکانتهای محلی سیستم اجرا کنید. مثلا MachineName\administrator یا هر اکانت موجود دیگری که لازم است. نام آن نیز باید حتما به شکل server_name\user_name باشد.
در حین استفاده از sqlcmd، هر فرمان زمانی اجرا میشود که در سطر پس از آن، یک go نوشته شده و enter شود.
ج)سپس توسط sp_addsrvrolemember به این اکانت اضافه شده، دسترسی sysadmin بدهید.
برای آزمایش آن فقط کافی است از متد is_srvrolemember برای کوئری گرفتن استفاده کنید و یا سعی کنید توسط اکانت اضافه شده، به SQL Server لاگین کنید. این اکانت اکنون در قسمت Security/logins قابل مشاهده است.
اگر نمیخواهید از اکانتهای ویندوزی استفاده کنید، create login را به نحو ذیل مقدار دهی کنید:
C:\>sqlcmd -S . 1> use master 2> go Changed database context to 'master'. 1> create login test_user with password='123#123' 2> go 1> exec sp_addsrvrolemember 'test_user','sysadmin' 2> go 1>