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

نام تاپیک: Attach کردن DataBase به برنامه نصبی

  1. #1

    Attach کردن DataBase به برنامه نصبی

    دوستان گرامی سلام
    من یه برنامه با C#‎ نوشتم که یه DataBase ولی نمی دونم چطوری این کارو انجام بدم که بعد از نصب برنامه دیگه نیاز به این نباشه که DataBase ام رو تو SqlServer،Attach کنم.ممنون میشم راهنمایی کنید

  2. #2
    کاربر دائمی آواتار ali_kolahdoozan
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اون سر دنیا
    پست
    1,631
    به این سادگیها با install shield نمی تونی

  3. #3
    یعنی چی؟
    از طریق Script این کار رو کردم ولی موقع نصب خطا میده

  4. #4

    Smile

    با سلام

    چرا می خوای با ستاپ این کار رو بکنی. خوب این مسئله رو می تونی با run شدن برنامت چک کنی . و در ورتی که وجود نداشت اون دیتابیس رو ایجاد کنی و سپس بانک خالی رو restore کنی
    می تونی از کد زیر هم استفاده کنی :


    Private Sub Main_Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim farsi As New Globalization.CultureInfo("fa-IR")
    InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(farsi)

    Me.date_now.Text = shamsi()
    Me.name_roz.Text = shamsiweekdayname()
    Me.time_now.Text = Now.TimeOfDay.ToString


    mablagh_pardakhti_jahiziyeh.Top = 1

    '===============================
    'چک کردن وجود دیتابیس و در صورت وجود نداشتن
    'اضافه نمودن دیتابیس و برگردان اطلاعات پایه
    '===============================
    Dim temp_cmd_ExecuteScalar As Integer
    Dim cmd As New SqlClient.SqlCommand()

    cmd.Connection = New SqlClient.SqlConnection("server=.;database=master; integrated security=true;")
    cmd.CommandText = "SELECT count(*) FROM master..sysdatabases WHERE name = 'jahiziyeh_" + code_shakheh + "'"

    Try
    cmd.Connection.Open()
    temp_cmd_ExecuteScalar = cmd.ExecuteScalar()
    Catch ex As Exception
    MsgBox("خطا در یافتن بانک اطلاعاتی ", MsgBoxStyle.Information, "سیستم جهیزیه")
    MsgBox(ex.Message)
    Exit Sub
    Finally
    cmd.Connection.Close()
    End Try

    If temp_cmd_ExecuteScalar = 0 Then
    If MsgBox(" بانک اطلاعاتی شاخه" + code_shakheh + " وجود ندارد.آیا مایل به ساختن بانک اطلاعاتی هستید؟ ", MsgBoxStyle.YesNo, "سیستم جهیزیه") = MsgBoxResult.Yes Then
    cmd.Connection = New SqlClient.SqlConnection("server=.;database=master; integrated security=true;")
    cmd.CommandText = "DECLARE @temp varchar(500);" & _
    "DECLARE @data_filename varchar(500);" & _
    "DECLARE @log_filename varchar(500);" & _
    "IF NOT EXISTS (SELECT * FROM master..sysdatabases WHERE name = 'jahiziyeh_" + code_shakheh + "') " & _
    "BEGIN " & _
    "CREATE DATABASE jahiziyeh_" + code_shakheh + ";" & _
    "SELECT @temp=filename FROM master..sysdatabases WHERE name = 'jahiziyeh_" + code_shakheh + "'; " & _
    "set @data_filename=left(@temp,len(@temp)-4)+'_data.mdf'; " & _
    "set @log_filename=left(@temp,len(@temp)-4)+'_log.mdf';" & _
    "ALTER DATABASE jahiziyeh_" + code_shakheh + " SET SINGLE_USER with ROLLBACK IMMEDIATE;" & _
    "RESTORE DATABASE jahiziyeh_" + code_shakheh + " FROM DISK='" + Application.StartupPath + "\database\jahiziyeh_empty.bak' WITH REPLACE," & _
    "MOVE 'jahiziyeh_data' TO @data_filename," & _
    "MOVE 'jahiziyeh_Log' TO @log_filename;" & _
    "ALTER DATABASE jahiziyeh_" + code_shakheh + " SET MULTI_USER;" & _
    "END " '& _
    '"ELSE " & _
    '"BEGIN " & _
    '"SELECT @temp=filename FROM master..sysdatabases WHERE name = 'jahiziyeh_" + code_shakheh + "'; " & _
    '"set @data_filename=left(@temp,len(@temp)-4)+'_data.mdf';" & _
    '"set @log_filename=left(@temp,len(@temp)-4)+'_log.mdf';" & _
    '"ALTER DATABASE jahiziyeh_" + code_shakheh + " SET SINGLE_USER with ROLLBACK IMMEDIATE;" & _
    '"RESTORE DATABASE jahiziyeh_" + code_shakheh + " FROM DISK='" + Application.StartupPath + "\database\jahiziyeh_empty.bak' WITH REPLACE," & _
    '"MOVE 'jahiziyeh_data' TO @data_filename," & _
    '"MOVE 'jahiziyeh_Log' TO @log_filename;" & _
    '"ALTER DATABASE jahiziyeh_" + code_shakheh + " SET MULTI_USER;" & _
    '"END"
    Try
    cmd.Connection.Open()
    cmd.ExecuteNonQuery()

    '=========یافتن نام شاخه
    Dim array_colum_output As New ArrayList
    Dim array_colum_search As New ArrayList
    Dim array_operator As New ArrayList
    Dim array_value_search As New ArrayList
    Dim array_and_or As New ArrayList
    Dim datatable_temp As New DataTable

    array_colum_output.Clear()
    array_colum_search.Clear()
    array_operator.Clear()
    array_value_search.Clear()
    array_and_or.Clear()

    array_colum_search.Add("code_shakheh")
    array_value_search.Add(code_shakheh)
    array_operator.Add("=")
    array_and_or.Add("and")

    Module1.search_select(array_colum_output, array_colum_search, array_operator, array_value_search, array_and_or, "Shakheh", Fill_types.SchimaData, datatable_temp)
    If datatable_temp.Rows.Count <> 0 Then
    Me.ToolStripStatusLabel7.Text = datatable_temp.Rows(0)("name_shakheh")
    End If
    '=========

    MsgBox("ساخت پایگاه داده و بازیابی اطلاعات پایه با موفقیت به پایان رسید", MsgBoxStyle.Information, "سیستم جهیزیه")

    Catch ex As Exception
    MsgBox("خطا در ایجاد و بازیابی اطلاعات پایه بانک اطلاعاتی ", MsgBoxStyle.Information, "سیستم جهیزیه")
    MsgBox(ex.Message)
    Exit Sub
    Finally
    cmd.Connection.Close()
    End Try

    Else
    '====================پاسخ منفی به ساخت پایگاه داده ================
    Application.Exit()
    '====================
    End If
    Else 'بانک اطلاعاتی وجود دارد حال باید جداول اطلاعاتی درون آن چک شود
    cmd.Connection = New SqlClient.SqlConnection("server=.;database=master; integrated security=true;")
    cmd.CommandText = "SELECT count(*) FROM jahiziyeh_" + code_shakheh + "..sysobjects WHERE name = 'Amozesh' AND type = 'U'"

    Try
    cmd.Connection.Open()
    temp_cmd_ExecuteScalar = cmd.ExecuteScalar()
    Catch ex As Exception
    MsgBox("خطا در یافتن جداول بانک اطلاعاتی ", MsgBoxStyle.Information, "سیستم جهیزیه")
    MsgBox(ex.Message)
    Exit Sub
    Finally
    cmd.Connection.Close()
    End Try

    If temp_cmd_ExecuteScalar = 0 Then
    If MsgBox(" بانک اطلاعاتی شاخه" + code_shakheh + " بدون اطلاعات پایه می باشد.آیا مایل به ساختن اطلاعات پایه هستید؟ ", MsgBoxStyle.YesNo, "سیستم جهیزیه") = MsgBoxResult.Yes Then
    cmd.Connection = New SqlClient.SqlConnection("server=.;database=master; integrated security=true;")
    cmd.CommandText = "DECLARE @temp varchar(500);" & _
    "DECLARE @data_filename varchar(500);" & _
    "DECLARE @log_filename varchar(500);" & _
    "SELECT @temp=filename FROM master..sysdatabases WHERE name = 'jahiziyeh_" + code_shakheh + "'; " & _
    "set @data_filename=left(@temp,len(@temp)-4)+'_data.mdf';" & _
    "set @log_filename=left(@temp,len(@temp)-4)+'_log.mdf';" & _
    "ALTER DATABASE jahiziyeh_" + code_shakheh + " SET SINGLE_USER with ROLLBACK IMMEDIATE;" & _
    "RESTORE DATABASE jahiziyeh_" + code_shakheh + " FROM DISK='" + Application.StartupPath + "\database\jahiziyeh_empty.bak' WITH REPLACE," & _
    "MOVE 'jahiziyeh_data' TO @data_filename," & _
    "MOVE 'jahiziyeh_Log' TO @log_filename;" & _
    "ALTER DATABASE jahiziyeh_" + code_shakheh + " SET MULTI_USER;"

    Try
    cmd.Connection.Open()
    cmd.ExecuteNonQuery()

    '=========یافتن نام شاخه
    Dim array_colum_output As New ArrayList
    Dim array_colum_search As New ArrayList
    Dim array_operator As New ArrayList
    Dim array_value_search As New ArrayList
    Dim array_and_or As New ArrayList
    Dim datatable_temp As New DataTable

    array_colum_output.Clear()
    array_colum_search.Clear()
    array_operator.Clear()
    array_value_search.Clear()
    array_and_or.Clear()

    array_colum_search.Add("code_shakheh")
    array_value_search.Add(code_shakheh)
    array_operator.Add("=")
    array_and_or.Add("and")

    Module1.search_select(array_colum_output, array_colum_search, array_operator, array_value_search, array_and_or, "Shakheh", Fill_types.SchimaData, datatable_temp)
    If datatable_temp.Rows.Count <> 0 Then
    Me.ToolStripStatusLabel7.Text = datatable_temp.Rows(0)("name_shakheh")
    End If
    '=========

    MsgBox("اطلاعات پایه با موفقیت بازیابی شد", MsgBoxStyle.Information, "سیستم جهیزیه")


    Catch ex As Exception
    MsgBox("خطا در بازیابی اطلاعات پایه ", MsgBoxStyle.Information, "سیستم جهیزیه")
    MsgBox(ex.Message)
    Exit Sub
    Finally
    cmd.Connection.Close()
    End Try

    Else
    '==================== پاسخ منفی به بازیابی اطلاعات پایه ================
    Application.Exit()
    '====================
    End If
    End If
    End If

    '===============================
    '===============================
    End Sub


    موفق باشی

  5. #5
    کاربر دائمی آواتار jaza_sa
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    تهران
    پست
    546
    سلام
    چرا به جای جواب به سوال، صورت سوال رو پاک میکنید

    اگه از SQL Server 2005 استفاده میکنید میتونید از این Script استفاده کنید


    USE [master]
    GO
    IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'EnglishAcademy')
    EXEC sp_attach_db
    @dbname = N'EnglishAcademy',
    @filename1 = N'C:\Program Files\English Academy\Data\DB.mdf',
    @filename2 = N'C:\Program Files\English Academy\Data\DB_log.ldf' ;


    البته باید بگم که هنوز خودم امتحانش نکردم، ولی به احتمال زیاد کار کنه!!!
    درضمن اگر میشه بجای اینکه جواب ی سوال دیگرو بدید، جواب سوال پرسیده شده رو بگید.
    متشکرم

  6. #6
    مرسی از راحنمایتون
    میشه بگید این کد رو کجا باید نوشت؟

  7. #7
    کاربر تازه وارد آواتار rezano
    تاریخ عضویت
    اردیبهشت 1388
    پست
    52

    نقل قول: Attach کردن DataBase به برنامه نصبی

    سلام

    ببخشید برنامه ای که دیتابیس Sql داره اگه دیتابیسش mdf باشه روی سیستمی که Sql نصب نباشه اجرا میشه؟
    یا کلا باید هر وقت از Sql استفاده می کنیم باید روی سیستم مصرف کننده حتما Sql server نصب باشه؟

  8. #8

    نقل قول: Attach کردن DataBase به برنامه نصبی

    سلام.
    دوست عزیز سعی کنید سوالتون رو در یک تاپیک جداگانه بپرسید.

    ببخشید برنامه ای که دیتابیس Sql داره اگه دیتابیسش mdf باشه روی سیستمی که Sql نصب نباشه اجرا میشه؟
    یا کلا باید هر وقت از Sql استفاده می کنیم باید روی سیستم مصرف کننده حتما Sql server نصب باشه؟
    در مورد سوالتون باید بگم خیر اجرا نخواهد شد.
    چون این فایل رو شما باید ابتدا به Engine SQL Server اول attach کنید تا بتونید از اون استفاده کنید.

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

  1. Attach کردن DataBase به برنامه نصبی
    نوشته شده توسط boof1363 در بخش تولید و توسعه برنامه های Setup و Install
    پاسخ: 6
    آخرین پست: جمعه 16 مرداد 1388, 18:59 عصر
  2. Attach Sql DataBase By CSharp Or InstallShild When Installing Packeg
    نوشته شده توسط Rasool IT در بخش C#‎‎
    پاسخ: 2
    آخرین پست: جمعه 08 شهریور 1387, 20:53 عصر
  3. روش Attach کردن Database در SQL Server توسط کد #C
    نوشته شده توسط hassan razavi در بخش C#‎‎
    پاسخ: 4
    آخرین پست: پنج شنبه 08 فروردین 1387, 10:42 صبح
  4. Error در Attach کردن Database
    نوشته شده توسط vatal در بخش SQL Server
    پاسخ: 9
    آخرین پست: شنبه 24 آذر 1386, 02:02 صبح
  5. attach نکردن database
    نوشته شده توسط Look in future در بخش SQL Server
    پاسخ: 5
    آخرین پست: پنج شنبه 26 شهریور 1383, 22:00 عصر

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

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