علت Attach نشدن دیتابیس در SQL Server و راه حل آن

علت Attach نشدن دیتابیس در SQL Server و راه حل آن

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۱۹ شهریور ۱۴۰۳
آخرین بروزرسانی: ۱۹ شهریور ۱۴۰۳
زمان مطالعه: 10 دقیقه
۰
(۰)

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

 مشکلات  attach نشدن دیتابیس در sql server

گاهی اوقات هنگام تلاش برای بازیابی اطلاعات از یک فایل MDF (فایل اصلی پایگاه داده) با خطای زیر مواجه می‌شویم:

 

 

مشکلات  attach نشدن دیتابیس در sql server

 

به‌طور دقیق‌تر اگر بگوییم، ممکن است هنگام اتصال فایل MDF به SQL Server پیغامی شبیه به خطای زیر را ببینید:

 

فایل MDF به SQL Server

 

جای نگرانی نیست. در ادامه مقاله، دلایل بروز این ارور و راه‌های رفع آن را بررسی خواهیم کرد.

دوره آموزشی نگهداری از بانک‌های اطلاعاتی در SQL Server نیک آموز

علت های رایج  attach نشدن دیتابیس در sql server 

فرض کنید دو کاربر با نام‌های Admin1 و Admin2 داریم. Admin1 یک پایگاه داده جدید به نام Test را ایجاد کرده که در آن مسیر فایل‌های MDF و LDF مشخص شده است. کد زیر به زبان SQL Server است،

 

CREATE DATABASE [Test]
CONTAINMENT = NONE
ON PRIMARY
(NAME = N’Test’, FILENAME = N’D:\SQLDATA\MSSQL13.MSSQLSERVER\MSSQL\DATA\Test.mdf’)
LOG ON
(NAME = N’Test_log’, FILENAME = N’D:\SQLDATA\MSSQL13.MSSQLSERVER\MSSQL\DATA\Test_log.ldf’)
GO

 

حالا Admin1 این پایگاه داده را Detach می‌کند. در این هنگام، مجوزهای دسترسی به فایل‌ها تغییر پیدا کرده و فقط Admin1 به‌طور کامل به آن‌ها دسترسی دارد. وقتی Admin2 سعی می‌کند پایگاه داده را دوباره Attach کند، به‌دلیل محدودیت در مجوزها، با ارور ۵۱۲۰ روبرو می‌شود.

مشکل attach نشدن دیتابیس در sql server دلایل مختلفی دارد که در ادامه به معرفی برخی از رایج‌ترین آن‌ها می‌پردازیم:

مجوز دسترسی به فایل های دیتابیس

اولین و مهم‌ترین دلیل این خطا، نداشتن مجوز کافی برای دسترسی به فایل‌های اصلی دیتابیس است. دیتابیس‌های SQL Server از دو فایل اصلی تشکیل شدند: MDF (فایل داده) و LDF (فایل لاگ). اگر کاربری که قصد اتچ کردن دیتابیس را دارد، اجازه دسترسی به این فایل‌ها نداشته باشد، با خطا مواجه خواهد شد.

موقعیت نامناسب فایل دیتابیس (MDF)

مورد دوم این است که شاید فایل MDF دیتابیس را به محل درستی منتقل نکرده باشید. این فایل باید در مسیر درست و قابل دسترسی برای SQL Server قرار بگیرد تا بدون خطا به دیتابیس وصل شود.

اجرا نشدن SQL Server Management Studio با دسترسی ادمین 

برای Attach شدن به دیتابیس، لازم است نرم‌افزار SQL Server Management Studio را با سطح دسترسی مدیر (Administrator) اجرا کنید. اگر این نرم‌افزار را با دسترسی کاربر باز کنید، ممکن است با خطای attach نشدن دیتابیس در sql server روبرو شوید.

نداشتن مجوز درایو سرور برای ذخیره فایل های سرور

آخرین دلیل هم این است که شاید درایو (حافظه) که SQL Server روی آن قرار دارد، مجوز لازم برای ذخیره‌سازی فایل‌های سرور را ندارد. این مورد، فنی‌تر است و معمولا باید در تنظیمات سرور بررسی کنید.

با بررسی این موارد، اطمینان از مجوزهای دسترسی و موقعیت صحیح فایل‌های دیتابیس، به احتمال زیاد بتوانید مشکل attach نشدن دیتابیس در sql server را حل کنید.

روش های عیب یابی  attach نشدن دیتابیس در sql server

در این قسمت از مقاله، به شما راهکارهایی برای عیب یابی و رفع مشکلات attach نشدن دیتابیس در sql server با استفاده از ابزارهای مختلف معرفی‌ خواهیم کرد.

پیکربندی فایروال برای سازگاری با SQL Server

این روش به شما کمک می‌کند تا مطمئن شوید فایروال ویندوز مانع از اتصال به SQL Server نمی‌شود.

برای انجام این کار، باید پورت‌های TCP ۱۴۳۳ و ۱۴۳۴ را برای ترافیک ورودی و خروجی باز کنید. همچنین ممکن است نیاز به ایجاد قوانین فایروال برای IPهای خاص یا دامنه‌ها داشته باشید.

تست اتصال با استفاده از فایل‌های UDL

فایل UDL (مخفف Universal Data Link) اطلاعات اتصال به SQL Server را در خود ذخیره می کند. با استفاده از این فایل‌ها به‌راحتی می‌توانید اتصال بین برنامه‌های کاربردی و SQL Server را تست کنید. برای ایجاد یک فایل UDL، ابزار Data Link Properties در ویندوز در دسترستان است.

استفاده از ابزار PortQryUI برای بررسی پورت

PortQryUI یک ابزار رایگان است که به شما کمک می‌کند تا پورت‌های TCP و UDP را اسکن کنید. با استفاده از این ابزار می‌توانید بررسی کنید آیا SQL Server روی پورت‌های صحیح در حال گوش دادن (Listen) به درخواست‌ها است یا خیر. همچنین می‌توانید از PortQryUI بررسی کنید آیا پورت‌های SQL Server توسط برنامه دیگری اشغال شدند یا خیر.

بررسی وضعیت پورت‌ های SQL Server

SQL Server می‌تواند روی پورت‌های پویا (Dynamic) یا ثابت (Static) پیکربندی شود. پورت‌های پویا به‌طور خودکار توسط SQL Server اختصاص داده می‌شوند، درحالی که پورت‌های ثابت به‌طور دستی پیکربندی می‌شوند.

برای بررسی اینکه SQL Server روی چه پورتی در حال گوش دادن است، از دستور زیر در SSMS استفاده کنید.

 

EXEC sp_configure 'show advanced options', 1; RECONFIGURE; GO

 

 راهکار های رفع attach نشدن دیتابیس در sql server

اکنون که مشکل و دلیل بروز آن را فهمیدیم، سراغ راهکارهای رفع آن خواهیم رفت. برای این کار،‌ گام‌های زیر را پیش بگیرید: 

  • گام اول: روی فایل MDF موردنظر راست کلیک کنید و گزینه «Properties» را انتخاب کنید.

 

 راهکارهای رفع attach نشدن دیتابیس در sql server

 

  • گام دوم: به سربرگ «Security» برید. روی دکمه  «Edit» کلیک کنید. حالا باید دسترسی کامل «Full Control» به این فایل را برای همه کاربرها و گروه‌ها تنظیم کنیم.

 

ویرایش سربرگ «Security»

 

در قسمت چک‌باکس، زیر گزینه Allow کلیک کنید تا دسترسی کامل به افراد داده شود.

 

دادن دسترسی در قسمت چک‌باکس

 

  • گام سوم: تنظیمات دسترسی را تغییر دهید. برای این کار روی پوشه اصلی که فایل .mdf پایگاه داده در آن قرار دارد، کلیک راست و گزینه «Properties» را انتخاب کنید.

 

تغییر دادن تنظیمات دسترسی

 

از قسمت «General» تیک گزینه «Read Only» (فقط خواندنی) را درصورت فعال بودن بردارید. روی دکمه «Apply» کلیک کنید.

 

گام سوم رفع attach نشدن دیتابیس در sql server

 

  • گام چهارم: در این مرحله، دسترسی کامل برای همه کاربرها را فعال کنید. اکنون برگه «Security» را باز کنید.

همانطور که در مرحله ۲ توضیح دادیم، به همه (Groups and User Names) دسترسی کامل یا «Full Control» دهید. درنهایت، روی دکمه «Apply» کلیک کنید.

 

گام چهارم رفع attach نشدن دیتابیس در sql server

 

تیک گزینه «Apply changes to this folder, subfolders and files» را بزنید و روی «Ok» کلیک کنید.

 

گام چهارم رفع attach نشدن دیتابیس در sql server

 

برای تایید نهایی، دوباره روی «Ok» کلیک کنید.

 

گام آخر  رفع attach نشدن دیتابیس در sql server

 

  • گام پنجم: وصل کردن مجدد پایگاه داده

حالا به SQL Server برگردید و سعی کنید دوباره فایل .mdf را وصل کنید. با انجام این مراحل، پایگاه داده شما باید به‌درستی به لیست دیتابیس‌ها اضافه شود.

تکنیک های  attach شدن سریع دیتابیس در sql server

در این قسمت، نکات مهمی را توضیح می‌دهیم که attach شدن سریع دیتابیس در sql server را برایتان راحت و بدون مشکل کند.

قبل از Attach، حتما Detach کنید

اولین نکته مهم این است که درصورت انتقال دیتابیس به سرور دیگر، آن را از سرور فعلی جدا (Detach) کنید. اگر بدون جدا کردن بانک اطلاعاتی، بخواهید دیتابیس را به سرور جدید Attach کنید، با خطا مواجه خواهید شد. 

مقدمات را فراهم کنید

وقتی می‌خواهید یک پایگاه داده را وصل کنید، باید به تمام فایل‌های آن دیتابیس دسترسی داشته باشید. این فایل‌ها معمولا شامل پسوندهای زیر هستند:

  • .mdf و .ndf برای فایل‌های حاوی داده (Data Files)
  • .ldf برای فایل لاگ تراکنش (Transaction Log File)

علاوه‌براین، اگر از قابلیت FILESTREAM در دیتابیس استفاده می‌کنید، باید تمام فایل گروه‌های مربوط به این قابلیت نیز در دسترس باشند. 

به مسیر فایل‌ ها توجه کنید 

اگر مسیر هریک از فایل‌های دیتابیس از زمان ایجاد تا آخرین Attach تغییر کرده باشد، نیاز است مسیر جدید را موقع Attach کردن مشخص کنید.  همچنین درصورتی‌که فایل‌های .mdf و .ldf در دایرکتوری‌های مختلف قرار دارند و یکی از مسیرها شامل \\?\GlobalRoot باشد، عملیات Attach کردن دیتابیس با خطا مواجه خواهد شد.

مجوز دسترسی را بررسی کنید

حساب کاربری که موتور دیتابیس (Database Engine) ازطریق آن اجرا می‌شود، باید مجوز خواندن (Read) فایل‌ها در دایرکتوری جدید را داشته باشد.

از Multiple Attached استفاده کنید

با استفاده از Multiple Attached Databases می‌توانید به کمک دستور ALTER DATABASE ATTACH چندین دیتابیس را به‌طور همزمان Attach کنید.

از ابزار های تشخیص و عیب‌ یابی خطا در Attach استفاده کنید.

اگر با خطایی در هنگام اتصال دیتابیس مواجه شدید، از SQL Server Error Log می‌توانید برای یافتن اطلاعات بیشتر استفاده کنید.

قفل اصلی دیتابیس را باز کنید

هنگامی که یک پایگاه داده رمزنگاری شده برای اولین بار به یک نمونه از SQL Server Attach می‌شود، مالک پایگاه داده باید کلید اصلی پایگاه داده (DMK) را با اجرای دستور زیر باز کند:

 

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'رمز عبور'

 

بهتر است رمزگشایی خودکار DMK را با اجرای دستور زیر فعال کنید:

 

ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY

 

کلام پایانی راجع به رفع مشکل attach نشدن دیتابیس در sql server

attach نشدن دیتابیس در sql server به‌راحتی با اعطای مجوزهای کامل به کاربر قابل حل است. در این مقاله، به بررسی دلایل بروز این مشکل و نحوه عیب‌یابی آن به‌طور کامل پرداختیم. اگر همچنان به پایگاه داده MDF خود دسترسی ندارید، از نرم‌افزارهای بازیابی SQL برای حل این نوع مشکلات می‌توانید استفاده کنید. درصورت نیاز به اطلاعات بیشتر یا راهنمایی در مورد استفاده از نرم افزارهای بازیابی SQL، می‌توانید در بخش نظرات انتهای این مطلب، سوال خود را مطرح کنید.

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

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

اولین نفر باش

title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
402 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران