سلام
موقعی که اقدام به ایجاد دیتابیس می کنید ، در حقیقت یوزر مربوط به سرویس Sql Server هست که باید دسترسی های لازم رو برای ایجاد فایل داشته باشه ، در ویندوزهای 8 و بعد از اون سختگیری بیشتری روی درایو سیستمی اعمال شده و بصورت پیش فرض مجوزها محدود هستن. خب حالا چه کنیم؟
راه اول: دم دستی ترین راه اینه که از طریق ویندوز به یوزر سرویس اسکیوال سرور دسترسی به فولدر مورد نظر رو بدیم
راه دوم: از طریق کد
این Namespace ها رو اضافه کنید
using System.Security.AccessControl;
using System.Security.Principal;
using System.IO;
این متد رو هم بنویسید:
private void SetPermission(string directoryName, SecurityIdentifier userAccount, FileSystemRights userRights, AccessControlType accessType)
{
try
{
var myDirectoryInfo = new DirectoryInfo(directoryName);
var myDirectorySecurity = myDirectoryInfo.GetAccessControl();
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(userAccount, userRights,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, accessType));
myDirectoryInfo.SetAccessControl( myDirectorySecurity);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
متد فوق رو به اینصورت فراخوانی کنید:
SetPermission(@"C:\", new SecurityIdentifier(WellKnownSidType.WorldSid,null) , FileSystemRights.FullControl, AccessControlType.Allow);
در فراخوانی ، پارامتر اول آدرس فولدری میشود که قرار است دسترسی هاش رو تغییر بدیم (همون فولدری که قراره دیتابیس داخلش ایجاد بشه)
اسکریپت ایجاد دیتابیس رو بعد از انجام مراحل بالا اجرا کنید.
پ ن: دقت کنید اگر با خطایی در حین تنظیم دسترسی ها برخوردید ، برنامتون رو بصورت Run as administrator اجرا کنید.
موفق باشید.