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

نام تاپیک: بک آپ گیری پایگاه داده SQl در #C

  1. #1
    کاربر دائمی آواتار behnam25214
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    @-<-<
    پست
    337

    Lightbulb بک آپ گیری پایگاه داده SQl در #C

    با سلام

    من چندتا سوال راجع به بک آپ گیری داشتم.
    1.به چند روش میتوان از یک پایگاه داده بک آپ گرفت؟البته باکد در #C
    2.بهترین روش برای بک آپ گیری چه روشی میباشد؟
    3.لزوما باید هر روز بک آپ گرفت یا نه؟
    4.آیا میتوان در #C بک آپ ها را هم ریستور کرد؟


  2. #2
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    بندرعباس
    پست
    126

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎?

    علیکم السلام
    .به چند روش میتوان از یک پایگاه داده بک آپ گرفت؟
    با استفاده از دستورات SQL میشه بک اپ گرفت
    .بهترین روش برای بک آپ گیری چه روشی میباشد؟
    من از Store Procedure استفاده می کنم که هم سریع است و هم مطمئن و نهایتا بی دردسر
    لزوما باید هر روز بک آپ گرفت یا نه؟
    این با اهمیت و میزان ورود اطلاعات بانک ارتباط مستقیم دارد
    آیا میتوان در C#‎‎‎‎‎ بک آپ ها را هم ریستور کرد؟
    به این مثال توجه کنید:


    internal void MakeRestore(string BAK_Path)
    {
    SqlParameter[] p = new SqlParameter[3];
    p[1] = new SqlParameter("@DBname", "DataBaseName");
    p[2] = new SqlParameter("@path", BAK_Path);
    con.Open();
    SqlCommand sql_cmd = new SqlCommand("ProcedureName", con);
    sql_cmd.CommandType = CommandType.StoredProcedure;

    sql_cmd.Parameters.AddWithValue(parameter[1].ParameterName, parameter[1].Value);
    sql_cmd.Parameters.AddWithValue(parameter[2].ParameterName, parameter[2].Value);

    sql_cmd.ExecuteNonQuery();
    con.Close();
    {



    حال پروسیجر مربوطه را به صورت زیر معرفی می کنیم:

        Create PROCEDURE [dbo].[ProcedureName].[]
    -- Add the parameters for the stored procedure here
    @Path char(50),
    @DBname char(20)
    AS
    BEGIN

    restore DATABASE @DBname
    from DISK = @path
    WITH REPLACE

    END
    آخرین ویرایش به وسیله mrsalam : شنبه 11 اردیبهشت 1389 در 10:12 صبح

  3. #3
    کاربر دائمی آواتار behnam25214
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    @-<-<
    پست
    337

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    مرسی از دوستان

    حالا این پروسیجر رو باید تو #C بنویسم یا تو SQl ?

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    بندرعباس
    پست
    126

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    به 2 روش میشه نوشت:

    1:
    کوری که در مثال قبل نوشتم را تو محیط SQL بنویس و Excute کن.

    2:(راحت تر)
    به ترتیب تصاویر:
    عکس های ضمیمه عکس های ضمیمه

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    بندرعباس
    پست
    126

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    البته یه روش دیگه هست که از همه راحتر و سریعتر هست که از(Typed DatSet) Wizard استفاده می شه که اگه لازم داری توضیح می دم ولی الان نمی تونم...

  6. #6
    کاربر دائمی آواتار behnam25214
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    @-<-<
    پست
    337

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    من کدی که تو #C مینویسم به parameter ارور میده.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تبریز
    پست
    501

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    از sqlsmo استفاده کتی راحت تر هستی
    http://msdn.microsoft.com/en-us/library/ms131540.aspx

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایران
    سن
    35
    پست
    467

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎?

    منم چیزی از لینک چیزی دستگیرم نشد

    چیزی که من برداشت می کنم اینه

    باید یه استورد پروسیجر داشته باشم (که یا با کد از #C می تونیم درست کنیم و یا قبلا تو خود دیتا بیس ایجاد کرده باشیم)
    و سپس با فراخوانی آن و دادن آدرس و اسم فایل یه فایل بک آپ ایجاد کینم
    استفاده از استورد پروسیجر سرعت رو بالا میبره
    ولی می تونیم از خود سی شارپ هم با کد اس کیو ال بک آپ رو بگیریم و سرعت و کاراییش فکر کنم از استورد پروسیچر کمتر باشه

    درسته دوستان؟

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    بندرعباس
    پست
    126

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎?

    باز هم سلام
    اگه برای ساختن Procedure عجله داشته باشیم و یا Procedure های زیادی باید درست کنیم از روش زیر استفاده کنید. این روش نیازی به کد نویسی زیادی ندارد و تا حدودی کار آدم رو راه می ندازه

    در این روش از Typed DataSet استفاده می کنیم.
    البته من از Typed DataSet فقط برای تولید Procedure استفاده می کنم و پس از اتمام کار می توان آن را پاک کرد. و اما اصل ماجرا:
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.jpg‏ (93.4 کیلوبایت, 276 دیدار)
    • نوع فایل: jpg 2.jpg‏ (91.5 کیلوبایت, 265 دیدار)
    • نوع فایل: jpg 3.jpg‏ (94.1 کیلوبایت, 265 دیدار)
    • نوع فایل: jpg 4.jpg‏ (59.5 کیلوبایت, 263 دیدار)
    • نوع فایل: jpg 5.jpg‏ (96.6 کیلوبایت, 258 دیدار)

  10. #10
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    بندرعباس
    پست
    126

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    ادامه آموزش:
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 6.jpg‏ (93.2 کیلوبایت, 255 دیدار)
    • نوع فایل: jpg 7.jpg‏ (98.1 کیلوبایت, 253 دیدار)
    • نوع فایل: jpg 8.jpg‏ (92.1 کیلوبایت, 249 دیدار)

  11. #11
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایران
    سن
    35
    پست
    467

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎?

    سلام دوستان
    لطفا یکی از دوستان حرفه ای این مشکل منو بررسی کنه که چطور میش حلش کرد
    من از دیتا بیس بک آپ می گیرم ولی در هر دو حالت (از خود اس کیو ال سرور و از داخل سی شارپ (کد برنامه )) فقط به یک فایل خاص بک آپ می گیره
    فایلی که در مسیر خود اس کیو ال سرور و در داخل دایرکتوری بک آپ هستش ، بک آپ می گیره ولی وقتی حتی این فایل رو به یه جای دیگه مانند F: کپی می کنم ارور زیر رو میده

    TITLE: Microsoft SQL Server Management Studio
    ------------------------------

    Backup failed for Server 'SERVER'. (Microsoft.SqlServer.SmoExtended)

    ------------------------------
    ADDITIONAL INFORMATION:

    System.Data.SqlClient.SqlError: Cannot open backup device 'F:\FullBackup.bak'. Operating system error 5(failed to retrieve text for this error. Reason: 1815). (Microsoft.SqlServer.Smo)
    یعنی وقتی حتی از داخل برنامه مسیر
    C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\FullBackup .bak
    رو انتخاب می کنم بک آپ با موفقیت گرفته میشه ولی وقتی همین فابل رو به مسیری مانند F:\FullBackup.bak کپی کردیم و این فایل رو انتخاب کردیم خطای بالا رو میده
    آیا قابل حل شدن هست؟
    آخرین ویرایش به وسیله hojjatshariffam : چهارشنبه 26 خرداد 1389 در 23:50 عصر

  12. #12

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎‎?

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

  13. #13
    کاربر دائمی آواتار حجتی نیا
    تاریخ عضویت
    دی 1387
    محل زندگی
    ایران
    پست
    400

    Post نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎?

    روش من :
    رستور..
     private void restore_backup_Click(object sender, EventArgs e)
    {

    objconnection.Open();
    if (openFileDialog_restore.ShowDialog() == DialogResult.OK)
    if (openFileDialog_restore.FileName.EndsWith(".bak") == true)
    {
    MessageBox.Show("برای تکمیل بازیابی اطلاعات، برنامه دوباره اجرا خواهد شد، چند لحظه صبر کنید...", "",MessageBoxButtons.OK,MessageBoxIcon.Information ,MessageBoxDefaultButton.Button2,MessageBoxOptions .RtlReading);
    string s1 = "ALTER DATABASE [" + Application.StartupPath + "\\sodour.mdf] SET OFFLINE WITH ROLLBACK IMMEDIATE";
    string s2 = "ALTER DATABASE [" + Application.StartupPath + "\\sodour.mdf] SET MULTI_USER";
    string query = "RESTORE DATABASE [" + Application.StartupPath + "\\sodour.mdf] FROM DISK ='" + openFileDialog_restore.FileName + "' WITH RECOVERY,REPLACE";
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = s1;
    cmd.Connection = objconnection;
    cmd.ExecuteNonQuery();

    cmd.CommandText = s2;
    cmd.Connection = objconnection;
    cmd.ExecuteNonQuery();

    cmd.CommandText = query;
    cmd.Connection = objconnection;
    cmd.ExecuteNonQuery();

    cmd.Dispose();
    Application.Restart();
    }
    else
    FarsiMessageBox.FMessageBox.Show("فایل با پسوند .bak انتخاب کنید", "خطا", FarsiMessageBox.FMessageBoxButtons.OK, FarsiMessageBox.FMessageBoxIcons.Error, FarsiMessageBox.FMessageBoxDefaultButtons.Button3) ;

    }


    بکآپ..
    {
    if (saveFileDialog_backup.ShowDialog() == DialogResult.OK)
    {
    string command = @"BACKUP DATABASE [" + Application.StartupPath + "\\sodour.mdf] TO DISK = N'"+saveFileDialog_backup.FileName+"' WITH FORMAT, INIT, NAME = N'accounting-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
    this.Cursor = Cursors.WaitCursor;
    SqlCommand oCommand = null;
    if (objconnection.State != ConnectionState.Open)
    objconnection.Open();
    oCommand = new SqlCommand(command, objconnection);
    oCommand.ExecuteNonQuery();
    this.Cursor = Cursors.Default;
    objconnection.Close();
    FarsiMessageBox.FMessageBox.Show("فابل پشتیبان ذخیره شد", "", FarsiMessageBox.FMessageBoxButtons.OK, FarsiMessageBox.FMessageBoxIcons.Information, FarsiMessageBox.FMessageBoxDefaultButtons.Button3) ;
    oCommand.Dispose();
    }
    }

    خیلی خوب و سریع کار میکنه

  14. #14
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایران
    سن
    35
    پست
    467

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎‎?

    نقل قول نوشته شده توسط حجتی نیا مشاهده تاپیک
    روش من :
    }[/code]بکآپ..
    {
    if (saveFileDialog_backup.ShowDialog() == DialogResult.OK)
    {
    string command = @"BACKUP DATABASE [" + Application.StartupPath + "\\sodour.mdf] TO DISK = N'"+saveFileDialog_backup.FileName+"' WITH FORMAT, INIT, NAME = N'accounting-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
    this.Cursor = Cursors.WaitCursor;
    SqlCommand oCommand = null;
    if (objconnection.State != ConnectionState.Open)
    objconnection.Open();
    oCommand = new SqlCommand(command, objconnection);
    oCommand.ExecuteNonQuery();
    this.Cursor = Cursors.Default;
    objconnection.Close();
    FarsiMessageBox.FMessageBox.Show("فابل پشتیبان ذخیره شد", "", FarsiMessageBox.FMessageBoxButtons.OK, FarsiMessageBox.FMessageBoxIcons.Information, FarsiMessageBox.FMessageBoxDefaultButtons.Button3) ;
    oCommand.Dispose();
    }
    }
    خیلی خوب و سریع کار میکنه
    دوست من دیتا بیس شما روی فایل ولی من از خود اس کیو ال استفاده می کنم
    شما آدرس فایل دیتا بیس رو میدی ولی من دستورات رو به خود اس کیو ال سرور ارسال می کنم ، این عمل باید تو شبکه هم جواب بده

  15. #15

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    من تا پيك شما را نخوندم ولي براي بك آپ و ريستور من كد زير را پيشنهاد مكنم من حتي در سيستم مقصد هم جواب گرفتم https://barnamenevis.org/showth...=218782&page=3

  16. #16
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایران
    سن
    35
    پست
    467

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎?

    نقل قول نوشته شده توسط csharpprogramer88 مشاهده تاپیک
    من تا پيك شما را نخوندم ولي براي بك آپ و ريستور من كد زير را پيشنهاد مكنم من حتي در سيستم مقصد هم جواب گرفتم https://barnamenevis.org/showth...=218782&page=3
    دوست من ، من کل این تاپیک ها رو خوندم
    مشکل من یه چیز دیگست اگه تاپیک شماره 15 رو بخونین می بینید که تو خود اس کیو ال سرور هم من این خطا رو دارم
    من با استفاده از این دستورات در مسیر خاصی از هاد دیسک می تونم بک آپ بگیرم ولی در مسیر ها دیگه اجازه نمی ده
    متن خطا رو هم نوشتم

  17. #17
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایران
    سن
    35
    پست
    467

    نقل قول: بک آپ گیری پایگاه داده SQl در C#‎‎‎?

    نقل قول نوشته شده توسط hojjatshariffam مشاهده تاپیک
    سلام دوستان
    لطفا یکی از دوستان حرفه ای این مشکل منو بررسی کنه که چطور میش حلش کرد
    من از دیتا بیس بک آپ می گیرم ولی در هر دو حالت (از خود اس کیو ال سرور و از داخل سی شارپ (کد برنامه )) فقط به یک فایل خاص بک آپ می گیره
    فایلی که در مسیر خود اس کیو ال سرور و در داخل دایرکتوری بک آپ هستش ، بک آپ می گیره ولی وقتی حتی این فایل رو به یه جای دیگه مانند F: کپی می کنم ارور زیر رو میده

    TITLE: Microsoft SQL Server Management Studio
    ------------------------------

    Backup failed for Server 'SERVER'. (Microsoft.SqlServer.SmoExtended)

    ------------------------------
    ADDITIONAL INFORMATION:

    System.Data.SqlClient.SqlError: Cannot open backup device 'F:\FullBackup.bak'. Operating system error 5(failed to retrieve text for this error. Reason: 1815). (Microsoft.SqlServer.Smo)
    یعنی وقتی حتی از داخل برنامه مسیر
    C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\FullBackup .bak
    رو انتخاب می کنم بک آپ با موفقیت گرفته میشه ولی وقتی همین فابل رو به مسیری مانند F:\FullBackup.bak کپی کردیم و این فایل رو انتخاب کردیم خطای بالا رو میده
    آیا قابل حل شدن هست؟
    یکی از دوستان حرفه ای مشکل منو حل کنه
    ضمنا تنها روشی که خطا نمی دیه پست شماره 10 در تاپیک زیر هست که علتشم اینه
    https://barnamenevis.org/showthread.php?t=218782
    علتش اینه که در این روش آدرس محل بک آپ گیری اسکیو ال سرور از داخل رجیستری ویندوز گرفته شده و بک آپ اونجا گرفته میشه بعد یه کپی از فایل بک آپ گرفته شده به محل مورد نظر ما کپی میشه .
    که معمولا آدرسی شبه اینه:
    C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\FileName.b ak
    من می خوام بدونم که چرا حتی خود اس کیو ال سرور نیز نمی تونه بجز این دایرکتوری به جاهای دیگه بک آپ بگیره، آیا تنظیمات خاصی لازمه؟
    البته شده که من خودم در برخی مواقع تونستم که به مسیر های دیگری هم بک آپ بگیرم ولی نه همیشه ، فقط برخی مواقع

  18. #18

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    واسه بکاپ گرفتن از sql 2000 از کتابخونه sqldmo و واسه نسخه 2005 به بعد باید از sqlsmo استفاده کنید
    حواستون باشه sqldmo روی 2005 به بعد وجود نداره و استفاده نمیشه

  19. #19
    کاربر دائمی آواتار Javad_raouf
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    445

    نقل قول: بک آپ گیری پایگاه داده SQl در #C?

    علت اینکه با SQLServer نمی تونید برخی جا ها بک آپ بگیرید اینه که ویندوز پرمیشن نمی ده
    من این مشکل رو داشتم تنها راه حلش اینه که به پوشه مقصد به صورت دستی یا با برنامه نویسی به Everyone پرمیشن بدی
    اینجا نوشته چطوری به صورت دستی می تونی به یک پوشه پرمیشن بدی:
    https://msdn.microsoft.com/en-us/library/bb727008.aspx

    ولی اگر می خوای به صورت برنامه نویسی پرمیشن بدی این کلاسیه که من ساختم و ازش استفاده می کنم:
    public class fPer
    {
    public static bool AlowFolPer(string StrPath)
    { return AlowFolPer(StrPath, true); }
    public static bool AlowFolPer(string StrPath, bool SubFooldersAndFiles)
    { return AlowFolPer(StrPath, SubFooldersAndFiles, "Everyone"); }
    public static bool AlowFolPer(string StrPath, string strUser)
    { return AlowFolPer(StrPath, true, strUser); }
    public static bool AlowFolPer(string StrPath, bool SubFooldersAndFiles, string strUser)
    {
    if (!System.IO.Directory.Exists(StrPath))
    return false;
    try
    {
    DirectorySecurity dSecurity = Directory.GetAccessControl(StrPath);


    FileSystemAccessRule fsar;
    //fsar = new FileSystemAccessRule(strUser, FileSystemRights.FullControl, AccessControlType.Allow);
    fsar = new FileSystemAccessRule(strUser, FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow);
    dSecurity.AddAccessRule(fsar);
    try
    {
    Directory.SetAccessControl(StrPath, dSecurity);
    }
    catch (Exception) { return false; }
    if (SubFooldersAndFiles)
    {
    bool blnOk = true;
    foreach (string x in Directory.GetDirectories(StrPath))
    blnOk = blnOk && AlowFolPer(x, true, strUser);
    foreach (string x in Directory.GetFiles(StrPath))
    blnOk = blnOk && AlowFilePer(x, strUser);
    return blnOk;
    }
    else
    return true;
    }
    catch (Exception) { return false; }
    }
    public static bool AlowFilePer(string StrPath)
    { return AlowFilePer(StrPath, "Everyone"); }
    public static bool AlowFilePer(string StrPath, string strUser)
    {
    FileSecurity fSecurity = File.GetAccessControl(StrPath);
    FileSystemAccessRule fsar = new FileSystemAccessRule(
    strUser
    , FileSystemRights.FullControl
    //, InheritanceFlags.None , PropagationFlags.NoPropagateInherit
    , AccessControlType.Allow);
    fSecurity.AddAccessRule(fsar);
    try
    {
    File.SetAccessControl(StrPath, fSecurity);
    return true;
    }
    catch (Exception)
    { return false; }
    }
    }

    Using های مورد نیاز این کلاس:
    using System.Security.AccessControl;
    using System.IO;


    حالا هنگام بکاپ گیری هر پوشه ای رو که کاربر برای ذخیره فایل بکاپ ذخیره کرد اول این دستور رو اجرا کن:
    fPer.AlowFolPer(backUpFoolder, true);


    اگر جایی از حرفام گنگ بود بگین توضیح بدم

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

  1. حرفه ای: پشتیبان گیری + بازیابی پایگاه داده SQL
    نوشته شده توسط alimanam در بخش C#‎‎
    پاسخ: 12
    آخرین پست: چهارشنبه 04 مرداد 1391, 14:58 عصر
  2. حرفه ای: پشتیبان گیری + بازیابی پایگاه داده SQL
    نوشته شده توسط alimanam در بخش VB.NET
    پاسخ: 17
    آخرین پست: شنبه 15 بهمن 1390, 02:19 صبح
  3. حرفه ای: پشتیبان گیری + بازبینی ( Restore ) پایگاه داده SQL ( دانلود کنین )
    نوشته شده توسط alimanam در بخش VB.NET
    پاسخ: 15
    آخرین پست: سه شنبه 04 اسفند 1388, 09:53 صبح
  4. پایگاه داده sql server برای PHP
    نوشته شده توسط m_ziba در بخش PHP
    پاسخ: 0
    آخرین پست: پنج شنبه 28 آبان 1383, 14:41 عصر
  5. پایگاه داده sql server کمک مشاوره
    نوشته شده توسط dena در بخش Classic ASP
    پاسخ: 1
    آخرین پست: پنج شنبه 14 اسفند 1382, 15:51 عصر

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

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