نیک آموز > وبلاگ > SQL Server > مفهوم DAC Connection در SQL Server
مفهوم DAC Connection در SQL Server

مفهوم DAC Connection در SQL Server

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۲۲ آذر ۱۴۰۴
آخرین بروزرسانی: 22 آذر 1404
زمان مطالعه: 15 دقیقه
۰
(۰)

از نسخه SQL Server 2005، مایکروسافت قابلیت جدیدی به نام Dedicated Administrator Connection (DAC) را معرفی کرد. این نوع اتصال می‌تواند به شما در در خروج از شرایط دشوار کمک فراوانی کند. با استفاده از این ویژگی، ادمین دیتابیس می‌تواند، در زمانی که ارتباط با پایگاه داده خطا می‌دهد، به دیتابیس وصل شود. این قابلیت در زمانی که مشکلات بحرانی عملکردی وجود دارد به شما کمک خواهد کرد که به دیتابیس وصل شده و کوئری‌های پایه را اجرا کنید. در واقع DAC، حتی زمانی که SQL Server به درخواست های اتصال استاندارد پاسخ مناسبی نمی‌دهد، به ادمین اجازه می‌دهد به دیتابیس دسترسی پیدا کرده و آن را عیب یابی کند و هر کدام از فرایندهایی که منجر به مشکل شده اند، را متوقف کند.

در این مقاله با استفاده از دو روش نحوه اتصال به دیتابیس از طریق DAC بیان شده و سپس اسکریپتهای مورد نیاز برای بررسی سلامت دیتابیس بیان خواهد شد.


مسیر حرفه‌ای آموزش SQL Server را با نیک‌ آموز، قدم‌به‌قدم تجربه کنید.


فعال کردن DAC بصورت Remote

کانکشن DAC از دو طریق SSMS و SQL CMD قابل دسترسی می‌باشد اما با توجه به اینکه SQL CMD منابع کمتری نسبت به SSMS  می‌گیرد، پیشنهاد مایکروسافت این است که از طریق SQL CMD  به آن وصل شوید. هدف اصلی DAC، تشخیص مشکلات دیتابیس می‌باشد در زمانی که راه دیگری برای اتصال به موتور پایگاه داده وجود ندارد و نباید از آن بعنوان یک اتصال Regular  استفاده کرد.

 بصورت دیفالت کانکشن DAC تنها به صورت لوکال قابل دسترس می‌باشد. از نظر فنی دلیل این موضوع این است که DAC بصورت پیش فرض تنها IP محلی ۱۲۷.۰.۰.۱ را می‌بیند. در واقع اگر سرور شما با مشکل مواجه شده باشد، ابتدا باید به آن وصل شده و سپس به دیتابیس وصل شوید که این مورد در مواقع ضروری بسیار آزار دهنده می‌باشد.

برای رفع این مشکل و فعال شدن اتصال DAC از طریق Remote Connection می‌توانید از کد زیر استفاده کنید:

Use master
GO
/* ۰ = Allow Local Connection, 1 = Allow Remote Connections*/
sp_configure 'remote admin connections', 1
GO
RECONFIGURE
GO

همچنین با استفاده از SSMS می‌توان DAC را فعال کرد. برای این کار بر روی SQL Server Instance کلیک راست کرده و Facets را انتخاب کنید.

Facets

با کلیک کردن بر روی Facets پنجره View Facets باز خواهد شد  در پنجره فوق Surface Area Configuration را انتخاب کرده و سپس RemoteDacEnabled را True قرار دهید.

True

اتصال به DAC از طریق SSMS

برای اتصال به DAC از طریق SSMS تنها کافی است قبل از نام SQL Server Instance name عبارت “ADMIN:” را وارد نمایید.

اتصال به DAC از طریق SSMS

 البته با کلیک کردن بر روی Connect خطایی بصورت زیر رخ خواهد داد:

Connect

برای رفع این خطا و اتصال DAC از طریق SSMS چند روش وجود دارد که در این مقاله یک روش ارائه می‌شود. برای رفع این مشکل ابتدا مطابق شکل زیر بر روی Database Engine Query کلیک کنید.

Database Engine Query

 سپس در پنجره باز شده ADMIN: را قبل از Server Name وارد کنید.

Server Name

 حال با کلیک کردن بر روی Connect به DAC متصل خواهید شد.

DAC

اتصال به DAC از طریق SQLCMD

همان طور که بیان گردید برای اتصال به DAC نیاز است که کاربر نقش sysadmin داشته باشد. برای وصل شدن به DAC از طریق SQLCMD ابتدا CMD را باز کرده و کد زیر را وارد کنید:

sqlcmd -S [server name] -U [user name] -P [password] -A

عبارت -A بیانگر این است که کاربر می‌خواهد با استفاده از DAC به دیتابیس وصل شود. بعد از اتصال موفقیت آمیز اعلانی بصورت ۱> نمایش خواهد داد که در آن می‌توانید کوئری T-SQL را وارد نمایید. بعنوان مثال با استفاده از کد زیر میتوانید Session ID مرتبط با کوئری های فعال را مشاهده نمایید:

SELECT
req.session_id,
req.status,
req.total_elapsed_time
FROM sys.dm_exec_requests req
WHERE status = 'running'
AND req.total_elapsed_time > 1
GO

زمانی که از طریق DAC به دیتابیس متصل شدید، می‌تواند با استفاده از کدهای زیر وضعیت سلامت دیتابیس را بررسی کرده و مشکلات بوجود آمده را حل نماید:

--  Locking Information
SELECT * FROM sys.dm_tran_locks
GO
--  Cache Status
SELECT * FROM sys.dm_os_memory_cache_counters
GO
--  Active Sessions
SELECT * FROM sys.dm_exec_sessions
GO
--  Requests Status
SELECT * FROM sys.dm_exec_requests
GO

پیدا کردن کاربری که با DAC متصل است

با استفاده از کد زیر می‌توان کاربری که از طریق DAC به دیتابیس متصل شده است را مشاهده کرد:

Select  CASE
WHEN es.session_id= @@SPID THEN 'you are :)'
ELSE es.host_name
END AS Who_is_running_DAC,
es.original_login_name,
es.session_id,
es.login_time,
es.status
from sys.endpoints as ep
join sys.dm_exec_sessions es on
ep.endpoint_id=es.endpoint_id
where ep.name='Dedicated Admin Connection'

مثال عملی

به منظور استفاده عملی از DAC، اسکریپت زیر را در دیتابیس اجرا کنید. اسکریپت فوق منجر به بار زیاد در سرورشده و ممکن است آن را از دسترس خارج کند  ( اگر سرور شما ضعیف است پیشنهاد می‌شود از اجرای کوئری فوق اجتناب کنید.

USE AdventureWorks2022
GO
SELECT *
FROM Person.Address
CROSS JOIN Person.Address a1
CROSS JOIN Person.Address a2
CROSS JOIN Person.Address a3
CROSS JOIN Person.Address a4
CROSS JOIN Person.Address a5
CROSS JOIN Person.Address a6
CROSS JOIN Person.Address a7
CROSS JOIN Person.Address a8

 بعد از اجرای کوئری فوق با استفاده از DAC به دیتابیس متصل شوید و سپس کوئری زیر را اجرا کنید. کوئری زیر Session ID مرتبط با کوئری بالا را نشان خواهد داد و می‌توانید Session ID فوق را با kill متوقف کنید.

SELECT
    r.session_id, p.status, r.start_time, r.command,
    text, p.program_name
FROM  sys.dm_exec_requests AS r,
    master.dbo.sysprocesses AS p
    CROSS APPLY sys.dm_exec_sql_text(p.sql_handle)
WHERE r.session_id = p.spid

خروجی کوئری بالا بصورت زیر است:

کوئری

همانطور که مشاهده می‌کنید Session ID ای که کوئری را اجرا کرده است ۸۰ می‌باشد. با استفاده از دستور زیر این کوئری متوقف خواهد شد.

kill 80

سخن پایانی

در این مقاله با استفاده از دو روش نحوه اتصال به دیتابیس از طریق کانکشن DAC بیان گردید. با استفاده از این قابلیت ادمین دیتابیس میتواند در زمانی که  که SQL Server به درخواست های اتصال استاندارد پاسخ مناسبی نمی‌دهد، به پایگاه داده وصل شده و آن را عیب یابی کرده و مشکلات بوجود آمده را حل نماید.با آموزش‌های SQL نیک‌ آموز، می‌توانید این مفاهیم را در قالب یکی از بهترین دوره‌های تخصصی به‌صورت عملی تجربه کنید.

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
دانلود مقاله
مفهوم DAC Connection در SQL Server
فرمت PDF
9 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
414 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
معرفی محصول
title sign
دیدگاه کاربران

دانلود رایگان: آموزش SQL Server

هر روز یک ویدئو آموزشی رایگان برای شما ایمیل خواهد شد!

پاپ آپ | SQL Server

  • این قسمت برای اهداف اعتبارسنجی است و باید بدون تغییر باقی بماند.