نمایش نتایج 1 تا 12 از 12

نام تاپیک: طریقه ایجاد database برای جلوگیری از خطای unc و permission

  1. #1

    Question طریقه ایجاد database برای جلوگیری از خطای unc و permission

    سلام مهندسین عزیز

    من دیتابیسم رو از طریق کد های سی شارپ و اسکریپت ها میسازم.
    یعنی یه فرم ایجاد کردم این امکان رو قرار دادم که کاربر با زدن بر روی دکمه ایجاد دیتابیس.
    دیتابیس رو روی هر سروری بسازه و اتومات اتچ کنه.به محض ایجاد دیتابیس.فایل های .mdf و .ldf کنار .exe پروژه قرار میگیرند.
    تا این مرحله مشکلی ندارم.
    فقط مشکل من زمانیه که پروژه توی درایو ویندوز نصب بشه .حالا هر درایوی :معمولا توی c هست.
    دیگه دیتابیس ایجاد نمیشه.یا اگه هم بشه دیگه به پروژه کانکت نمیشه.
    خطاهایی که میده
    unc Share
    پرمیژن
    erorr access dined
    .
    دوستان برای حل این مشکل چکار کنم؟
    لطفا راهنمایی بفرمایید. راه حل رو لطف کنید بگید.
    سپاس فراوان.

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

  2. #2
    کاربر دائمی آواتار juza66
    تاریخ عضویت
    دی 1389
    محل زندگی
    هفت تپه - 7hill
    پست
    798

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    سلام خانم مینا

    شما کد ایجاد کردن تون رو بذارید شاید با کمی تغییرات این نحوه دسترسی داشتن به درایو سی رو بدست اورد


    روش من اینه که یک فایل پشتیبان رو بازیابی میکنم اینجوری مستقیا درون درایو سی قرار میگیره، با کد البته


    یک راه هم خود مایکروسافت ارائه داده
    https://support.microsoft.com/en-us/kb/307283

    ایا اسکریپت رو کامند قرار میدید؟

    روشی که گفتم اجرا کردید؟
    آخرین ویرایش به وسیله Mahmoud.Afrad : سه شنبه 19 بهمن 1395 در 06:49 صبح

  3. #3

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    نقل قول نوشته شده توسط juza66 مشاهده تاپیک
    ایا اسکریپت رو کامند قرار میدید؟

    روشی که گفتم اجرا کردید؟
    ممنونم که وقت میزارین.
    روش من همون روش مایکروسافته که لینک گذاشتین.
    متاسفانه موفق نشدم.
    ممنون میشم بیشتر راهنمایی بفرمایید.
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 20 آبان 1395 در 19:32 عصر

  4. #4

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    نقل قول نوشته شده توسط Mina74 مشاهده تاپیک
    سلام اساتید محترم.
    لطفا راهنمایی بفرمایید.ممنونم
    سلام
    اول اینکه توصیه بسیار بسیار بسیار زیاد میکنم که یه دیتابیس ایجاد کنید و بصورت دستی روی سرور مورد نظر Attach یا Restore کنید. اینجوری بهتر هست!
    اما اگر به هر دلیلی نیاز دارید که با کدنویسی بانک رو ایجاد کنید توصیه میکنم مسیر فایلها رو جایی غیر از درایو سی بزارید! با یه بررسی ساده درایوهای سیستم رو
    پیمایش کنید و درایوی غیر از سی یا درایو ویندوز رو انتخاب کنید!

    اما اگر باز هم نیاز بود که درایو سی باشه اینسری مجبورید به یوزری که دارید استفاده میکنید پریمیژن اون پوشه رو به یوزر مورد استفادتون بدین!

    اینا همرو گفتم! ولی اگر مایل باشی میتونی سورس کدتو بزاری و خودمون بررسی کنیم تا مشکل رو برطرف کنیم!

  5. #5

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    نقل قول نوشته شده توسط black_fire667 مشاهده تاپیک
    سلام
    اول اینکه توصیه بسیار بسیار بسیار زیاد میکنم که یه دیتابیس ایجاد کنید و بصورت دستی روی سرور مورد نظر Attach یا Restore کنید. اینجوری بهتر هست!
    اما اگر به هر دلیلی نیاز دارید که با کدنویسی بانک رو ایجاد کنید توصیه میکنم مسیر فایلها رو جایی غیر از درایو سی بزارید! با یه بررسی ساده درایوهای سیستم رو
    پیمایش کنید و درایوی غیر از سی یا درایو ویندوز رو انتخاب کنید!

    اما اگر باز هم نیاز بود که درایو سی باشه اینسری مجبورید به یوزری که دارید استفاده میکنید پریمیژن اون پوشه رو به یوزر مورد استفادتون بدین!

    اینا همرو گفتم! ولی اگر مایل باشی میتونی سورس کدتو بزاری و خودمون بررسی کنیم تا مشکل رو برطرف کنیم!

    String str;
    SqlConnection myConn = new SqlConnection ("Server=localhost;Integrated security=SSPI;database=master");

    str = "CREATE DATABASE MyDatabase ON PRIMARY " +
    "(NAME = MyDatabase_Data, " +
    "FILENAME = 'C:\\MyDatabaseData.mdf', " +
    "SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
    "LOG ON (NAME = MyDatabase_Log, " +
    "FILENAME = 'C:\\MyDatabaseLog.ldf', " +
    "SIZE = 1MB, " +
    "MAXSIZE = 5MB, " +
    "FILEGROWTH = 10%)";

    SqlCommand myCommand = new SqlCommand(str, myConn);
    try
    {
    myConn.Open();
    myCommand.ExecuteNonQuery();
    MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (System.Exception ex)
    {
    MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    finally
    {
    if (myConn.State == ConnectionState.Open)
    {
    myConn.Close();
    }
    }




    سپاس
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 20 آبان 1395 در 22:29 عصر

  6. #6

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    خواهش می کنم .

    ببینید دلیل خاصی نداره که حتما حتما بصورت دستی ایجاد یا اتچ بشه! ولی من شخصا ترجیح میدم برای نصب نرم افزار خودم توی سازمان مشتری حضور داشته باشم و اینکار رو دستی انجام بدم. اینجوری در صورت بروز چنین مشکلاتی در دم برطرفش میکنم و دیگه مشتری ازم باگ نمیبینه!

    منظورم فایل MDF و LDF مربوط به دیتابیس هست که توی کدتون تو مسیر ریشه درایو سی گذاشتید!

    ببینید منظورم از اینکه گفتم پرمیژن بدین به یوزر منظورم یوزری که دسترسی فول داشته باشه! بصورت پیشفرض یوزر Administrator


    و اما رفع اشکال :
    یه پوشه توی یکی از درایوها بسازید(حتی درایو سی) و بعد اون دوتا عدد مربوط به سایز رو به ۳ تغییر بده!
    کد نهایی به شکل زیر میشه - توجه کنید که من یه پوشه به نام e توی درایو سی ساختم و این کد رو اجرا کردم! شما به میل خودتون تغییر بدین
                String str;
    SqlConnection myConn = new SqlConnection("Server=localhost;Integrated security=SSPI;database=master");

    str = "CREATE DATABASE MyDatabase ON PRIMARY " +
    "(NAME = MyDatabase_Data, " +
    "FILENAME = 'C:\\e\\MyDatabaseData.mdf', " +
    "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
    "LOG ON (NAME = MyDatabase_Log, " +
    "FILENAME = 'C:\\e\\MyDatabaseLog.ldf', " +
    "SIZE = 3MB, " +
    "MAXSIZE = 5MB, " +
    "FILEGROWTH = 10%)";

    SqlCommand myCommand = new SqlCommand(str, myConn);
    try
    {
    myConn.Open();
    myCommand.ExecuteNonQuery();
    MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (System.Exception ex)
    {
    MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    finally
    {
    if (myConn.State == ConnectionState.Open)
    {
    myConn.Close();
    }
    }


    شما میتونید قبل از اجرای کد مربوط به ایجاد دیتابیس ابتدا با کدنویسی پوشه مربوطه رو بسازید بعد اقدام به اجرای کدهای دیتابیس کنید که دیگه مشکلیم نباشه
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 20 آبان 1395 در 22:32 عصر

  7. #7

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    ممنونم

    ببینید دلیل خاصی نداره که حتما حتما بصورت دستی ایجاد یا اتچ بشه! ولی من شخصا ترجیح میدم برای نصب نرم افزار خودم توی سازمان مشتری حضور داشته باشم و اینکار رو دستی انجام بدم. اینجوری در صورت بروز چنین مشکلاتی در دم برطرفش میکنم و دیگه مشتری ازم باگ نمیبینه!
    شما چطور 2فایل دیتابیس رو میبرید تو سیستم مقصد اتچ میکنید؟با چه کانکشن استرینگی؟رو اکسپرس؟)(خب وقتی مشتریت مشهد باشه و تو هم شیراز بعد اینترنت نداشته باشه.نمیشه رفت برا مشتری دستی انجام داد.درسته؟یه راه حل برا این؟

    ببینید منظورم از اینکه گفتم پرمیژن بدین به یوزر منظورم یوزری که دسترسی فول داشته باشه! بصورت پیشفرض یوزر Administrator
    من ادمینستریتور هم میکردم باز خطا میداد/


    بنده 3تا سیستم دارم که یکی درایو ویندوزش درایو C هست
    یکی اصلا درایوی به نام C نداره و درایو ویندوزش F هست.
    یکی هم درایو C داره اما درایو ویندوزش G هست.

    و من ستاپم را رو هر کدوم میبرم خودش اتومات درایو ویندوز رو پیدا میکنه.
    و کد شما این مشکل من رو برطرف نمیکنه.؟
    و پوشه رو چطور تو درایو سی ایجاد کنم در صورتی که اصلا وجود نداره.

    من این رو لحاظ کردم

    Application.StartupPath, dbName + ".mdf
    باید چکار کنم؟؟؟


    آیا من پوشه ایجاد کنم مشکلم حل میشه؟
    آیا میتونم با این کد درایو ویندوز رو پیدا کنم و پوشه رو در اون ایجاد کنم؟

    https://barnamenevis.org/showthread.p...AF%D9%88%D8%B2
    سپاس
    آخرین ویرایش به وسیله Mina74 : پنج شنبه 20 آبان 1395 در 23:52 عصر

  8. #8

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    تو یکی از سیستم هام که ویندوزش تو درایو سی هست و ویندوزش 10 هست با خطای زیر مواجه میشم.

    5444.PNG

    654.PNG



    درصورتی که یه ویندوز 7 دارم تو یه درای غیر ویندوزی ران میکنم اونجا بدون خطا کار میکنه.

  9. #9

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    سلام
    موقعی که اقدام به ایجاد دیتابیس می کنید ، در حقیقت یوزر مربوط به سرویس 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 اجرا کنید.




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

  10. #10

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    نقل قول نوشته شده توسط محمد آشتیانی مشاهده تاپیک
    سلام
    موقعی که اقدام به ایجاد دیتابیس می کنید ، در حقیقت یوزر مربوط به سرویس 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 اجرا کنید.




    موفق باشید.

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

    ممنون میشم بیشتر راهنمایی کنید.
    سپاسگذارم

  11. #11

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    کسی نیست یعنی؟

  12. #12

    نقل قول: طریقه ایجاد database برای جلوگیری از خطای unc و permission

    سلام
    مشکلش چیه؟ بنده بارها این رو تست کردم ، مشکلی نداشته ، کافیه برنامتون رو فقط یک بار بصورت Run As Administrator اجرا کنید و با متد بالا به فولدری که مد نظرتون هست دسترسی کامل بصورت Everyone به اون فولدر بدید.
    بعدش مشکلی با اجرای اسکریپت نباید داشته باشید.

    اگر حل نشد ، پروژتون رو و یا یک پروژه تستی که مشکل داره رو اینجا بذارید لطفا
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

تاپیک های مشابه

  1. پاسخ: 25
    آخرین پست: شنبه 15 بهمن 1390, 20:45 عصر
  2. سوال: طریقه ایجاد (میزکار) برای مدیریت یک بخش از نرم افزار؟
    نوشته شده توسط StepUp360 در بخش C#‎‎
    پاسخ: 10
    آخرین پست: دوشنبه 24 خرداد 1389, 00:51 صبح
  3. پاسخ: 2
    آخرین پست: چهارشنبه 02 آذر 1384, 00:22 صبح
  4. خبر : NTT برای جلوگیری از آسیب اطلاعات، فایل سیستم NILFS را برای لینوکس عرضه کرد
    نوشته شده توسط zehs_sha در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 0
    آخرین پست: دوشنبه 11 مهر 1384, 14:32 عصر
  5. 8 روش برای جلوگیری از هک کردن در Asp.Net
    نوشته شده توسط SoheilKH در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: سه شنبه 12 خرداد 1383, 13:26 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •