Access에서 연결된 테이블에 대한 DSN이 없는 SQL Server 연결을 만드는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 892490 - 이 문서가 적용되는 제품 보기.
고급: 전문적인 코드 작성, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서의 내용은 Microsoft Access 데이터베이스(.accdb 및 .mdb)에만 적용됩니다.
모두 확대 | 모두 축소

이 페이지에서

소개

이 문서에서는 Microsoft Access에서 연결된 테이블에 대한 DSN(데이터 원본 이름)을 사용하지 않는 Microsoft SQL Server 연결을 만드는 방법을 설명합니다. 이 연결을 DSN이 없는 연결이라고도 합니다. 이 문서에 포함된 예제는 Microsoft Office Access 2007, Microsoft Office Access 2003 및 Microsoft Access 2002에 적용됩니다.

추가 정보

Microsoft Access에서 DSN을 사용하여 연결된 SQL Server 테이블을 만들 수 있습니다. 그러나 데이터베이스를 다른 컴퓨터로 이동하는 경우 해당 컴퓨터에서 DSN을 다시 만들어야 합니다. 이 절차는 두 대 이상의 컴퓨터에서 수행해야 하는 경우 문제가 될 수 있습니다. 이 절차가 올바르게 수행되지 않으면 연결된 테이블이 DSN을 찾지 못할 수 있으므로 SQL Server에 연결하지 못할 수 있습니다.

SQL Server 테이블에 대한 연결을 만들려고 하지만 데이터 원본 대화 상자에서 DSN을 하드 코드하지 않으려는 경우 다음 방법 중 하나를 사용하여 DSN이 없는 SQL Server 연결을 만듭니다.

방법 1: CreateTableDef 메서드 사용

CreateTableDef 메서드를 사용하여 연결된 테이블을 만들 수 있습니다. 이 메서드를 사용하려면 새 모듈을 만든 후 다음 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 데이터베이스에 추가하는 경우 프로그래밍 논리를 조정해야 합니다.

방법 2: DAO.RegisterDatabase 메서드 사용

DAO.RegisterDatabase 메서드를 사용하여 AutoExec 매크로나 시작 폼에서 DSN 연결을 만들 수 있습니다. 이 메서드가 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
참고?RegisterDatabase 메서드가 다시 호출되면 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
참고 이 메서드는 "myDSN"을 DSN 이름으로 사용하여 Access 데이터베이스에서 SQL Server의 연결된 테이블을 이미 만들었다고 가정합니다.

속성

기술 자료: 892490 - 마지막 검토: 2008년 3월 14일 금요일 - 수정: 1.5
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
키워드:?
kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com