현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

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

Office 2003에 대한 지원이 종료되었습니다.

Microsoft는 2014년 4월 8일 Office 2003에 대한 지원을 종료했습니다. 이러한 변경에 따라 해당 소프트웨어 업데이트 및 보안 옵션이 영향을 받습니다. 사용자에게 미치는 영향 및 계속 보호를 받는 방법에 대해 알아보십시오.

고급: 전문적인 코드 작성, 상호 운용성 및 다중 사용자 기술이 필요합니다.

이 문서의 내용은 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 passwordFunction 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 FunctionAttachDSNLessTable_Err:        AttachDSNLessTable = False    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.DescriptionEnd 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 IfEnd 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 passwordFunction 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 FunctionCreateDSNConnection_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 IfEnd Sub
참고 이 메서드는 "myDSN"을 DSN 이름으로 사용하여 Access 데이터베이스에서 SQL Server의 연결된 테이블을 이미 만들었다고 가정합니다.
ACC2002 ACC2003 Jet ODBC SQL Server VB VBA
속성

문서 ID: 892490 - 마지막 검토: 03/14/2008 09:08:46 - 수정: 1.5

  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490
피드백