كيفية إنشاء اتصال dsn-ب SQL Server للجداول المرتبطة في الوصول

خيارات متقدمة: يتطلب ترميز الخبير إمكانية التشغيل المتداخل ومهارات متعددة.


تنطبق هذه المقالة فقط على قاعدة بيانات Microsoft Access (.accdb و.mdb).

مقدمة

توضح هذه المقالة كيفية إنشاء اتصال Microsoft SQL Server للجداول المرتبطة في Microsoft Access يستخدم اسم مصدر بيانات (DSN). هذا يعرف أيضا أقل DSN الاتصال. أمثلة هذه المقالة تطبيق Microsoft Office Access 2007، Microsoft Office Access 2003 و Microsoft Access 2002.

مزيد من المعلومات

يمكنك استخدام DSN لإنشاء جداول ملقم SQL المرتبط في Microsoft Access. ولكن عند نقل قاعدة البيانات إلى كمبيوتر آخر، يجب إعادة إنشاء DSN على ذلك الكمبيوتر. قد يصعب هذا الإجراء عندما تقوم بتنفيذها على أكثر من كمبيوتر واحد. عندما لا يتم تنفيذ هذا الإجراء بشكل صحيح، الجداول المرتبطة قد لا تتمكن من تحديد مكان DSN. ذلك، قد لا يكون قادراً على الاتصال بملقم SQL الجداول المرتبطة.

عندما تريد إنشاء ارتباط إلى جدول SQL Server لكن لا تريد ترميزًا DSN في مربع الحوار مصادر البيانات ، استخدم إحدى الطرق التالية لإنشاء اتصال أقل DSN SQL Server.

الطريقة الأولى: استخدام أسلوب كريتيتابليديف

أسلوب كريتيتابليديف يتيح لك إنشاء جدول مرتبط. لاستخدام هذا الأسلوب، إنشاء وحدة نمطية جديدة ثم قم بإضافة دالة AttachDSNLessTable التالية إلى الوحدة النمطية الجديدة.
'//Name     :   AttachDSNLessTable'//Purpose  :   Create a linked table to SQL Server without using a DSN
'//Parameters
'// stLocalTableName: Name of the table that you are creating in the current database
'// stRemoteTableName: Name of the table that you are linking to on the SQL Server database
'// stServer: Name of the SQL Server that you are linking to
'// stDatabase: Name of the SQL Server database that you are linking to
'// stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'// stPassword: SQL Server user password
Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)
On Error GoTo AttachDSNLessTable_Err
Dim td As TableDef
Dim stConnect As String

For Each td In CurrentDb.TableDefs
If td.Name = stLocalTableName Then
CurrentDb.TableDefs.Delete stLocalTableName
End If
Next

If Len(stUsername) = 0 Then
'//Use trusted authentication if stUsername is not supplied.
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
Else
'//WARNING: This will save the username and the password with the linked table information.
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword
End If
Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
CurrentDb.TableDefs.Append td
AttachDSNLessTable = True
Exit Function

AttachDSNLessTable_Err:

AttachDSNLessTable = False
MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description

End Function

لاستدعاء الدالة AttachDSNLessTable ، إضافة تعليمات برمجية مشابهة لواحدة من أمثلة التعليمات البرمجية التالية في ماكرو AutoExec أو الحدث Form_Open نموذج بدء التشغيل:
  • عند استخدام ماكرو AutoExec ، استدعاء دالة AttachDSNLessTable ومن ثم تمرير المعلمات مشابهة لما يلي من الإجراء RunCode.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
  • عند استخدام نموذج بدء التشغيل، يمكنك إضافة تعليمات برمجية مشابهة لما يلي للحدث Form_Open .
    Private Sub Form_Open(Cancel As Integer)    If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then
    '// All is okay.
    Else
    '// Not okay.
    End If
    End Sub
    ملاحظة: يجب عليك ضبط منطق البرمجة عند إضافة أكثر من جدول مرتبط بقاعدة بيانات Access.

الطريقة الثانية: استخدام DAO. طريقة ريجيستيرداتاباسي

DAO. ريجيستيرداتاباسي أسلوب يتيح لك إنشاء اتصال DSN في ماكرو AutoExec أو نموذج بدء التشغيل. على الرغم من أن هذا الأسلوب لا يزيل الحاجة إلى اتصال DSN، المساعدة في حل هذه المشكلة عن طريق إنشاء DSN الاتصال في التعليمات البرمجية. لاستخدام هذا الأسلوب، إنشاء وحدة نمطية جديدة ثم قم بإضافة دالة CreateDSNConnection التالية إلى الوحدة النمطية الجديدة.
'//Name     :   CreateDSNConnection'//Purpose  :   Create a DSN to link tables to SQL Server
'//Parameters
'// stServer: Name of SQL Server that you are linking to
'// stDatabase: Name of the SQL Server database that you are linking to
'// stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'// stPassword: SQL Server user password
Function CreateDSNConnection(stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String) As Boolean
On Error GoTo CreateDSNConnection_Err

Dim stConnect As String

If Len(stUsername) = 0 Then
'//Use trusted authentication if stUsername is not supplied.
stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr & "Trusted_Connection=Yes"
Else
stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr
End If

DBEngine.RegisterDatabase "myDSN", "SQL Server", True, stConnect

'// Add error checking.
CreateDSNConnection = True
Exit Function
CreateDSNConnection_Err:

CreateDSNConnection = False
MsgBox "CreateDSNConnection encountered an unexpected error: " & Err.Description

End Function

ملاحظة: إذا كان يتم استدعاء الأسلوب ريجيستيرداتاباسي مرة أخرى، يتم تحديث DSN.

لاستدعاء الدالة CreateDSNConnection ، إضافة تعليمات برمجية مشابهة لواحدة من أمثلة التعليمات البرمجية التالية في ماكرو AutoExec أو الحدث Form_Open نموذج بدء التشغيل:
  • عند استخدام ماكرو AutoExec ، استدعاء دالة CreateDSNConnection ومن ثم تمرير المعلمات مشابهة لما يلي من الإجراء RunCode.
        CreateDSNConnection ("(local)", "pubs", "", "")
  • عند استخدام نموذج بدء التشغيل، يمكنك إضافة تعليمات برمجية مشابهة لما يلي للحدث Form_Open .
    Private Sub Form_Open(Cancel As Integer)    If CreateDSNConnection("(local)", "pubs", "", "") Then
    '// All is okay.
    Else
    '// Not okay.
    End If
    End Sub
ملاحظة: هذا الأسلوب يفترض أنك قمت مسبقاً بإنشاء جداول ملقم SQL المرتبطة في قاعدة بيانات Access باستخدام "myDSN" كاسم DSN.
خصائص

رقم الموضوع: 892490 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 2

تعليقات