الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

backup/restore على SQL Server بالكود بدون إيقافه

مغلق
بدأه mqmmss في 22 مارس 2006 · 7 رد · 1,536 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني جميعاً بما أن هذه أول مشاركة لي في المنتدى وإن شاء الله ليست بأخيره

فأنا أطرح هنا سؤال هام جداً جداً جداً

هذا السؤال يتعلق بعمل Backup , Restore لقاعدة بيانات موجودة في SqlServer2000 Enterprise Manager عن طريق VB.Net

وللعلم بأن هذا الموضوع قد تم طرحة من قبل الأخ والصديق فواز الشمري لطرحة لنفس الموضوع الذي أرغب بالحصول على إجابة سريعة وعاجلة بخصوصة

والذي أشكره خصوصاً وأشكر جميع الزملاء الذين طرحوا إجابات ولو أنها ليست التى نبحث عنها أنا والأخ فواز الشمري ...

إخواني أود منكم مساعدتي في القيام بهذه العملية بالشفرة البرمجية من خلال VB.Net وليس بإستخدام T-SQL..

هذا وللعلم بأنني قد قمت بإيجاد طريقة لهذا الموضوع

من خلال نسخ القاعدة من مكان وجود SqlServer إلى أي مكان أحددة في حالة Backup والعكس في حالة Restore من خلال الشفرة المختصرة التالية:

فمثلاً عند Backup :

FileCopy ("Microsoft SQL Server Path\MSSQL\Data\DataBaseName_Data.MDF","Target Path")
FileCopy ("Microsoft SQL Server Path\MSSQL\Data\DataBaseName_Log.ldf","Target Path")

ولكن هذه العملية سواء عند Backup أو Restore فإنها تتطلب عمل إيقاف مؤقت Stop لـ SqlServer

فأتمنا من إخواني جميعاً إعطائي شفرة في VB.Net يتم من خلالها إيقاف مؤقت Stop لـ SqlServer ومن ثم إعادة تشغيلها Start بعد إنهاء العملية (Backup أو Restore)

أو أي طريقة أخرى لحل هذه العملية (Backup , Restore).

وشكرأ للجميع مسبقاً...

تم تعديل هذه المشاركة بواسطة walcom في 23 مارس 2006 في 11:47

#2

بسم الله الرحمن الرحيم

اخي الكريم لا اعتقد ان هنالك طريقة مباشرة لعمل Backup لـِ SQLServer2000 والله اعلم

هنالك حل وهو ان تستخدم الكود لقراءة قاعدة البيانات والهيكلية الخاصة لها وان تنشأء ملف SQLScript

هذا المثال استخدمته في برنامجي منذ فترة ولكن ليس لـ SQLServer بل استخدمته لـ MySQL

ولا اعتقد ان هنالك فرق كبير بين قاعدتين البيانات سوى بعض التعديلات البسيطة

Namespace SearchJo.Cls
    Public Class AdminDB
        Inherits ClsBase

#Region "Class Member Decleration"
        Dim _table As String
#End Region
        Public Sub New()
            '// TODO:: Class Constrcter Logic here
        End Sub
        Public Function GetAllDataBase() As DataTable
            Dim str As String
            str = "SHOW DATABASES;"
            Dim _adpt As New MySqlDataAdapter(str, _oCon)
            Dim _toReturn As New DataTable
            _adpt.Fill(_toReturn)
            Return _toReturn
        End Function
        Public Function GetAllTables() As DataTable
            Dim str As String
            str = "show tables from Searchjo"
            Dim _adpt As New MySqlDataAdapter(str, _oCon)
            Dim _toReturn As New DataTable
            _adpt.Fill(_toReturn)
            Return _toReturn
        End Function
        Public Function DescTable() As DataTable
            Dim str As String
            str = "use searchjo; desc " + _table
            Dim _adpt As New MySqlDataAdapter(str, _oCon)
            Dim _toReturn As New DataTable
            _adpt.Fill(_toReturn)
            Return _toReturn
        End Function
        Public Function GetAllDataLogic() As DataTable
            Dim str As String
            str = "select * from " + _table
            Dim _adpt As New MySqlDataAdapter(str, _oCon)
            Dim _toReturn As New DataTable
            _adpt.Fill(_toReturn)
            Return _toReturn
        End Function
#Region "Class Property Decleration"
        Public Property [Table]() As String
            Get
                Return _table
            End Get
            Set(ByVal Value As String)
                _table = Value
            End Set
        End Property
#End Region
    End Class

وفي الشاشة الرئيسية كالتالي يكون الكود

        Dim _Desc As New DataTable
        Dim MyObj As New SearchJo.Cls.AdminDB
        Dim lstTables As New ListBox
        lstTables.DataSource = MyObj.GetAllTables
        lstTables.DataTextField = MyObj.GetAllTables.Columns(0).ToString()
        lstTables.DataBind()

        If lstTables.Items.Count = 0 Then
            Exit Sub
        End If
        For i = 0 To lstTables.Items.Count - 1
            Dim pk As String = ""
            Dim fk As String = ""
            MyObj.Table = lstTables.Items(i).Text
            str += "DROP TABLE IF EXISTS `" + lstTables.Items(i).Text + "`;" + ControlChars.NewLine
            _Desc = MyObj.DescTable
            str += "Create table " + "'" + lstTables.Items(i).Text + "'" + ControlChars.NewLine
            str += "( " + ControlChars.NewLine
            For j = 0 To _Desc.Rows.Count - 1
                str += "'" + _Desc.Rows(j)(0) + "' " + _Desc.Rows(j)(1)
                If _Desc.Rows(j)(2) = Nothing Or _Desc.Rows(j)(2) = "" Then
                    str += " NOT NULL "
                End If
                If _Desc.Rows(j)(3) = "PRI" Then
                    pk += "PRIMARY KEY  (`" + _Desc.Rows(j)(0) + "`)"
                End If
                If IsDBNull(_Desc.Rows(j)(4)) = True Then
                Else
                    str += "default '" + _Desc.Rows(j)(4) + "' "
                End If
                If IsDBNull(_Desc.Rows(j)(5)) = True Then
                Else
                    str += " " + _Desc.Rows(j)(5)
                End If
                str += "," + ControlChars.NewLine
            Next
            str += pk + ControlChars.NewLine
            str += ");" + ControlChars.NewLine
        Next 'Next i
        txtData.Text = str
[CODE/]

اقتباس

على فكرة استخدم هنا كود ASP.Net ولا يوجد هذا الفرق الكبير في الكود بينها وبين VB.Net / Windows Application


هذا بعض الشرح للتعليمات
اقتباس

تستخدم هذه التعليمة لإظهار قواعد البيانات الموجودة على السيرفر
[CODE]
str = "SHOW DATABASES;"

استخدم هذه التعليمة لإظهار اسماء الجداول الموجودة في قاعدة بيانات معينة

 str = "show tables from Searchjo"

استخدم هذه التعليمة لأرجاع بنية احد الجداول كالتالي

 str = "use searchjo; desc " + _table

حيث table_ هو اسم الجدول المراد اخذ البينة الخاصة به.

هذا الكود قد تتضطر للتعديل عليه حسب هيكلة SQLServer حيث لا اعتقد ان هنالك كلمة use في SQLServer عتقد انه يجب عليك

أن تجد الكلمة البديلة لهذه الكلمة

moh4evar@hotmail.com

cbb6a3b884f4f88b3a8e3d44c636cbd8.jpg

مركز تحميل الصور والملفات لغاية 10MB من دون فترة محددة لحذف الملفات

www.4img.com

#3

بالنسبة لموضوع تشغيل وإيقاف SQLServer

هذا البرنامج المكون من 3 اسطر كفيل بعمل ما تريد

مرفقا البرنامج

Enjoy

WindowsApplication9.zip

moh4evar@hotmail.com

cbb6a3b884f4f88b3a8e3d44c636cbd8.jpg

مركز تحميل الصور والملفات لغاية 10MB من دون فترة محددة لحذف الملفات

www.4img.com

#4

السلام عليكم..

كيف لي أن أعمل Stop و Start لـ SqlServer2000

بإستخدام الشفرة البرمجية في VB.Net 2005

تم تعديل هذه المشاركة بواسطة mqmmss في 23 مارس 2006 في 16:27

#5

شكراً جزيلاً لك أخي Only The Lonely على تعاونك

#6

السلام عليكم

اقتباس
اخي الكريم لا اعتقد ان هنالك طريقة مباشرة لعمل Backup لـِ SQLServer2000 والله اعلم

ممكن عمل Backup and Restore بى الكود افتح الوصلة التالية

Backup and Restore

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#7

عن طريق SQLDMO.dll و الذي تجده ب

C:\Program Files\Microsoft SQL Server\80\Tools\Binn

ضيفه as reference

 
       Dim SqlServ As New SQLDMO.SQLServer
        SqlServ.LoginSecure = True
        SqlServ.Connect("(local)")
        SqlServ.Stop()
        SqlServ.DisConnect()
        MsgBox("Stopped Successfully")
        SqlServ.Start(True, "(local)")
        MsgBox("Start Successfully")

تم تعديل هذه المشاركة بواسطة lanoon في 26 مارس 2006 في 11:18

#8

شكراً جزيلاً لكم إخواني على تعاونكم للإجابة سؤالي.

وأخص بالذكر كل من أجاب على سؤالي وجزاكم الله خير.

هذا الموضوع مغلق.

مواضيع مشابهة