منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة بعد تحويل قاعدة البيانات من mysql الى sql server
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله

مشكلتي بعد تحويل قاعدة البيانات من mysql الى sql server

في mysql يعمل هذا الكود

PHP كود :
Try

 
           If Sqlconn.State ConnectionState.Open Then
                Sqlconn
.Close()
 
           End If
 
           Sqlconn.Open()
 
           Dim dp As New SqlDataAdapter("select DISTINCT id from table "Sqlconn)
 
           Dim ds As New DataSet
            ds
.Clear()
 
           dp.Fill(ds)
 
           Comsal.DataSource ds.Tables(0)
 
           Comsal.DisplayMember "id "
 
           Sqlconn.Close()
 
           ds.Dispose()
 
       Catch ex As Exception
            MsgBox
(ex.Message)
 
       End Try 

الان في sql server هو نفس الكود بالاعلى لا يعمل إلا بعد التعديل إلى 

PHP كود :
Try

 
           If Sqlconn.State ConnectionState.Open Then
                Sqlconn
.Close()
 
           End If
 
           Sqlconn.Open()
 
           Dim dp As New SqlDataAdapter("select DISTINCT id from database.table "Sqlconn)
 
           Dim ds As New DataSet
            ds
.Clear()
 
           dp.Fill(ds)
 
           Comsal.DataSource ds.Tables(0)
 
           Comsal.DisplayMember "id"
 
           Sqlconn.Close()
 
           ds.Dispose()
 
       Catch ex As Exception
            MsgBox
(ex.Message)
 
       End Try 

يعني بعد تعديل اسم الجدول الى قاعدة البيانات ثم الجدول هكذا database.table

المشكلة لدي الكثير والالف من الاكواد بالمشروع هل من طريقة لتشغيل اكود بوضعه الاول اي اقصد بدون تعديل الكود الاول !؟
وعليكم السلام ورحمة الله وبركاته

لا تحتاج لتحدد اسم قاعدة البيانات في كل استعلام.
لأن أنت بالأساس تكون قد حددت قاعدة البيانات التي تعمل عليها ضمن جملة الاتصال الخاصة بالسيرف الخاص بإتصالك..
من خلال الجزئية الموجودة في جملة الاتصال :


مثلاً الجهاز(أو السيرفر لديك) اسمه (BlueD)  وقاعدة البيانات اسمها (Store)  تصبح جملة الاتصال
كود :
ConnectionString = "Data Source=BlueD;Initial Catalog=Store;Integrated Security=True"

إذا كنت قد فعلت ذلك وبقيت المشاكل.
حاول تستخدم اصدار أحدث من الـ SQL Server  يفضل 2014 فما فوق...
أنا حالياً أستخدم SQL Express 2019  ويعمل معي دون الحاجة لكتابة اسم القاعدة في كل استعلام مع كل جزء فيها جدول أو غيره -
اهلا اخي طاها شاكر لك الايضاح بالفعل نفس الجمله بالاضافه اليوزر والباسورد ونفس المشكله بجرب تثبيت اصدار أحدث من نسخة 2012 لكن هل يعمل اصدار 2019 على ويندوز 7 server pack 1 او يطلب ملفات ومكتبات

بجرب اصدار اعلى على َيندَز 10 واشوف
للأسف ثبت sql server 2019
نفس المشكله
جرب معي :

أفتح مشروع جديد وضع عليه :
أربع أزرار : 
داتاجريدفيو :
الزر الأول : Create DataBase  الكود الخاص به هو :
كود :
Dim dbS As New SqlConnection("Data source=" + Environment.MachineName +
                               ";Initial Catalog=master;" +
                               "Integrated Security=True;" +
                               "MultipleActiveResultSets=True")
If (dbS.State = ConnectionState.Open) Then dbS.Close()

dbS.Open()

Dim CMD As New SqlCommand("CREATE DATABASE TA_DB1;", dbS)
CMD.ExecuteNonQuery()

dbS.Close()

MsgBox("Create DataBase Successfully...")

الزر الثاني :  Create Table
والكود الخاص به هو :
كود :
Dim strConnectionDBRef As String = "Data Source=" + Environment.MachineName +
                                   ";Initial Catalog=TA_DB1;" +
                                   "Integrated Security=True"

Dim dbs As New SqlConnection(strConnectionDBRef)
dbs = New SqlConnection(strConnectionDBRef)
If (dbs.State = ConnectionState.Open) Then dbs.Close()
dbs.Open()

Dim strCommand As String = "CREATE TABLE [Company](
                                [CompanyName] [nvarchar](max) NULL,
                                [Address] [nvarchar](max) NULL)"


Dim command = New SqlCommand(strCommand, dbs)
command.ExecuteNonQuery()
dbs.Close()

MsgBox("Create Table Successfully...")

- الزر الثالث : Fill Table in DataBase 
والكود الخاص به هو :
كود :
Dim strConnectionDBRef As String = "Data Source=" + Environment.MachineName +
                                   ";Initial Catalog=TA_DB1;" +
                                   "Integrated Security=True"


Dim cn_cngig As New SqlConnection(strConnectionDBRef)
If (cn_cngig.State = ConnectionState.Open) Then cn_cngig.Close()

cn_cngig.Open()


Dim CMD As New SqlCommand("insert into COMPANY(CompanyName,Address)values('AL Noor LLC','Abu Dhabi' )", cn_cngig)
CMD.ExecuteNonQuery()
CMD = New SqlCommand("insert into COMPANY(CompanyName,Address)values('ALSalam LLC','Dubai' )", cn_cngig)
CMD.ExecuteNonQuery()

cn_cngig.Close()
MsgBox("The Data was  fill successfully...")

والزر الرابع : 
كود عرض البيانات المدخلة في الـ DataGrideView
كود :
Dim strConnectionDBRef As String = "Data Source=" + Environment.MachineName +
                                   ";Initial Catalog=TA_DB1;" +
                                   "Integrated Security=True"

Dim Con_1 As New SqlConnection(strConnectionDBRef)

If (Con_1.State = ConnectionState.Open) Then Con_1.Close()

Con_1.Open()

Dim dt_ As New DataTable

Dim STR_S As String = "select CompanyName,Address  from COMPANY"
Dim sqlAdp As SqlDataAdapter = New SqlDataAdapter(STR_S, Con_1)
sqlAdp.Fill(dt_)

DataGridView1.DataSource = dt_

Con_1.Close()


الآن شغل وجرب البرنامج بالضغط على الازرار على الترتيب
هل يعمل لديك ..  (إذا كان Sql Server يعمل عندك سيتم تنفيذ هذا البرنامج)
================================
هذا الكود جربته عندي واشتغل طبيعي ..
ولم أحتج لأن أحدد اسم قاعدة البيانات ضمن الجدول ولا اسم الجدول لعرض الحقول ..

إن اشتغل معك الكود بنجاح ..
يعني أن لديك مشكلة ضمن برنامجك ..
فقم بإعادة بناء مشروعك (أقصد كل النوافذ في مشروع جديد) من جديد وبالنسبة للأدوات والأكواد فقط قم بعملية نسخ من المشروع القديم  ولصق في الجديد 
وسيعمل معك بإذن الله. (لكن لا تقم نسخ الأكواد من صفحة الـ Designer   لأنك وقتها ستنقل نفس المشكلة للمشروع الجديد)..
(11-04-23, 07:39 AM)Taha Okla كتب : [ -> ]جرب معي :

أفتح مشروع جديد وضع عليه :
أربع أزرار : 
داتاجريدفيو :
الزر الأول : Create DataBase  الكود الخاص به هو :
كود :
Dim dbS As New SqlConnection("Data source=" + Environment.MachineName +
                               ";Initial Catalog=master;" +
                               "Integrated Security=True;" +
                               "MultipleActiveResultSets=True")
If (dbS.State = ConnectionState.Open) Then dbS.Close()

dbS.Open()

Dim CMD As New SqlCommand("CREATE DATABASE TA_DB1;", dbS)
CMD.ExecuteNonQuery()

dbS.Close()

MsgBox("Create DataBase Successfully...")

الزر الثاني :  Create Table
والكود الخاص به هو :
كود :
Dim strConnectionDBRef As String = "Data Source=" + Environment.MachineName +
                                   ";Initial Catalog=TA_DB1;" +
                                   "Integrated Security=True"

Dim dbs As New SqlConnection(strConnectionDBRef)
dbs = New SqlConnection(strConnectionDBRef)
If (dbs.State = ConnectionState.Open) Then dbs.Close()
dbs.Open()

Dim strCommand As String = "CREATE TABLE [Company](
                                [CompanyName] [nvarchar](max) NULL,
                                [Address] [nvarchar](max) NULL)"


Dim command = New SqlCommand(strCommand, dbs)
command.ExecuteNonQuery()
dbs.Close()

MsgBox("Create Table Successfully...")

- الزر الثالث : Fill Table in DataBase 
والكود الخاص به هو :
كود :
Dim strConnectionDBRef As String = "Data Source=" + Environment.MachineName +
                                   ";Initial Catalog=TA_DB1;" +
                                   "Integrated Security=True"


Dim cn_cngig As New SqlConnection(strConnectionDBRef)
If (cn_cngig.State = ConnectionState.Open) Then cn_cngig.Close()

cn_cngig.Open()


Dim CMD As New SqlCommand("insert into COMPANY(CompanyName,Address)values('AL Noor LLC','Abu Dhabi' )", cn_cngig)
CMD.ExecuteNonQuery()
CMD = New SqlCommand("insert into COMPANY(CompanyName,Address)values('ALSalam LLC','Dubai' )", cn_cngig)
CMD.ExecuteNonQuery()

cn_cngig.Close()
MsgBox("The Data was  fill successfully...")

والزر الرابع : 
كود عرض البيانات المدخلة في الـ DataGrideView
كود :
Dim strConnectionDBRef As String = "Data Source=" + Environment.MachineName +
                                   ";Initial Catalog=TA_DB1;" +
                                   "Integrated Security=True"

Dim Con_1 As New SqlConnection(strConnectionDBRef)

If (Con_1.State = ConnectionState.Open) Then Con_1.Close()

Con_1.Open()

Dim dt_ As New DataTable

Dim STR_S As String = "select CompanyName,Address  from COMPANY"
Dim sqlAdp As SqlDataAdapter = New SqlDataAdapter(STR_S, Con_1)
sqlAdp.Fill(dt_)

DataGridView1.DataSource = dt_

Con_1.Close()


الآن شغل وجرب البرنامج بالضغط على الازرار على الترتيب
هل يعمل لديك ..  (إذا كان Sql Server يعمل عندك سيتم تنفيذ هذا البرنامج)
================================
هذا الكود جربته عندي واشتغل طبيعي ..
ولم أحتج لأن أحدد اسم قاعدة البيانات ضمن الجدول ولا اسم الجدول لعرض الحقول ..

إن اشتغل معك الكود بنجاح ..
يعني أن لديك مشكلة ضمن برنامجك ..
فقم بإعادة بناء مشروعك (أقصد كل النوافذ في مشروع جديد) من جديد وبالنسبة للأدوات والأكواد فقط قم بعملية نسخ من المشروع القديم  ولصق في الجديد 
وسيعمل معك بإذن الله. (لكن لا تقم نسخ الأكواد من صفحة الـ Designer   لأنك وقتها ستنقل نفس المشكلة للمشروع الجديد)..

هي نفس الطريقة عندي عند التنفيذ يعطي خطأ 
Name
Value
Type

ex
{"Invalid object name 'Table'."}
System.Exception {System.Data.SqlClient.SqlException}

يعني لابد من ادراج اسم قادة البيانات ثم اسم الجدول حتى يتم استعراض البيانات

(11-04-23, 09:10 AM) كتب : [ -> ]
(10-04-23, 03:53 PM)ali1999 كتب : [ -> ]السلام عليكم ورحمة الله

مشكلتي بعد تحويل قاعدة البيانات من mysql الى sql server

في mysql يعمل هذا الكود

PHP كود :
Try

 
           If Sqlconn.State ConnectionState.Open Then
                Sqlconn
.Close()
 
           End If
 
           Sqlconn.Open()
 
           Dim dp As New SqlDataAdapter("select DISTINCT id from table "Sqlconn)
 
           Dim ds As New DataSet
            ds
.Clear()
 
           dp.Fill(ds)
 
           Comsal.DataSource ds.Tables(0)
 
           Comsal.DisplayMember "id "
 
           Sqlconn.Close()
 
           ds.Dispose()
 
       Catch ex As Exception
            MsgBox
(ex.Message)
 
       End Try 

الان في sql server هو نفس الكود بالاعلى لا يعمل إلا بعد التعديل إلى 

PHP كود :
Try

 
           If Sqlconn.State ConnectionState.Open Then
                Sqlconn
.Close()
 
           End If
 
           Sqlconn.Open()
 
           Dim dp As New SqlDataAdapter("select DISTINCT id from database.table "Sqlconn)
 
           Dim ds As New DataSet
            ds
.Clear()
 
           dp.Fill(ds)
 
           Comsal.DataSource ds.Tables(0)
 
           Comsal.DisplayMember "id"
 
           Sqlconn.Close()
 
           ds.Dispose()
 
       Catch ex As Exception
            MsgBox
(ex.Message)
 
       End Try 

يعني بعد تعديل اسم الجدول الى قاعدة البيانات ثم الجدول هكذا database.table

المشكلة لدي الكثير والالف من الاكواد بالمشروع هل من طريقة لتشغيل اكود بوضعه الاول اي اقصد بدون تعديل الكود الاول !؟

المشكلة في طريقة التحويل، فما هي طريقة التحويل التي استخدمتها؟

اقرأ هذا الموضوع ربما تجد فيه الطريقة الصحيحة
Migration guide: MySQL to SQL Server

نفس الطريقة