2014-09-17 2 views
0

구조 조정 후 Access 파일을 테스트하는 동안 ODBC 연결 문자열의 UID와 PWD에 대한 자격 증명을 자주 뒤집었지만 최근에 내가 액세스 한 것이 더 이상 표시되지 않습니다. 전체 연결 문자열MS Access에서 더 이상 전체 ODBC 연결 문자열을 속성 시트에 표시하지 않습니다.

프로덕션 통과 쿼리와 테스트 통과 쿼리가 각각 하나씩 있습니다. 테스트 통과 쿼리는 전체 ODBC 연결 문자열을 표시하지만 4 개의 프로덕션 통과 쿼리는 ODBC;DSN=schema_name; 만 표시합니다.

a) I click the three dots b) The "Select Data Source" box opens c) I select the data source d) I choose "Yes" to save the password in the connection string.

을하지만이 후는 여전히 축약 된 연결 문자열을 표시 나는 ODBC 연결을 재 작성했습니다. MS Access에서 전체 연결 문자열을 표시하려면 어떻게해야합니까?

연결 문자열 UID와 PWD가 ODBC 데이터 원본 구성 상자에 저장된 것과 항상 일치해야합니까? .MDB에 저장 액세스 2010

  • 를 사용

    • (액세스 2000) 형식
    • 사용자 DSN : MySQL의 ODBC 5.3 유니 코드 드라이버
    • 시스템 DSN : MySQL의 ODBC 5.3 ANSI 드라이버
  • 답변

    1

    UID/암호 저장은 FIRST가 테이블 링크를 작성한 방법에 따라 결정됩니다. 연결 문자열에서 "암호 저장"을 선택한 경우 uid/password를 포함하여 다시 링크되고 저장되며 문자열에 명확하게 표시됩니다.

    "비밀번호 저장"확인란을 선택하지 않은 상태에서 다시 연결하거나 uid/비밀번호를 포함 할 때도 연결 문자열에 저장되지 않습니다. 따라서 해당 서버에 로그인하지 않은 경우 이러한 연결 테이블을 열면 로그온 또는 ODBC 연결 오류가 발생합니다. 그러나 해당 테이블에 로그인 한 경우 액세스는 해당 세션의 uid/password를 캐시합니다.

    그래서 "어떻게"링크를 만들면 uid/password가 저장 될지가 결정됩니다. 이 설정을 제어하는 ​​해당 TableDef 속성은 따라서이다 : 일반적으로

    MyTableDef.Attributes = DB_ATTACHSAVEPWD 
    

    은 해당 링크에서 UID/비밀번호를 포함하지하는 것이 훨씬 낫다. 응용 프로그램 시작시 로그온을 실행하는 것이 가장 좋습니다. 이것은 또한 다른 uid/password를 사용할 수 있으며 테이블을 다시 링크하지 않아도된다는 것을 의미합니다. 나는 querydefs가이 설정을 가지고 있다고 생각하지 않지만, 사용자가 데이터베이스에 로그온했다면 uid/password없이 작업 할 것이다.

    질문에 대답하려면 : uid/암호가 저장되거나 저장되지 않도록하는 옵션 (특성) 설정이 있습니다. 이 옵션은 연결 문자열의 uid/password를 INCLUDE 할 때 원인을 오버 라이딩합니다. 테이블 def에 연결 문자열에 uid/password를 저장할 수있는 위의 속성 설정이 없으면 제거되고 저장되지 않습니다.

    다음은 연결에 uid/암호를 포함하지 않고 모든 테이블을 연결하고 작동시키는 방법을 설명하는 훌륭한 기사입니다. "트릭"은 응용 프로그램을 시작할 때 단순히 로그온 만하는 것입니다.

    전원 팁 : http://blogs.office.com/b/microsoft-access/archive/2011/04/08/power-tip-improve-the-security-of-database-connections.aspx

    후속 데이터베이스 연결의 보안 향상 : 당신은 SQL 서버와의 접속을 사용하는 경우 일반적으로를, 당신은 연결된 테이블을 사용합니다. 항상 그렇듯이 Access를 계속 사용할 수 있습니다. 따라서 연결된 테이블에 양식을 SQL 서버에 간단히 바인딩 할 수 있으므로 모든 코드를 작성할 필요없이 작동하는 양식과 보고서를 가질 수 있습니다. 그래서 tableDefs (링크 된 것들)와 querydefs는 모두 연결 속성을 가지고 있습니다.

    querydefs에는 위에서 설명한 "암호 저장"특성이 없습니다. 이것은 DSN을 지정하면 DSN에 예상되므로 암호 등이 저장되지 않는다는 것을 의미합니다. 따라서 DSN 부분을 제거하십시오. 이렇게하면 DSN 연결이 덜 생성됩니다. DSN 부분을 남겨두면 문자열에 uid/password를 저장하거나 지정할 수 있습니다. 또한 파일이나 컴퓨터 DSN (파일을 사용하고 다른 하나는 레지스트리를 사용함)을 사용할 경우 가능한 다른 동작을 확인합니다.

    +0

    이 사실을 이해하려고 노력하지만 여기서 모든 언어에 익숙하지 않습니다. "테이블 링크"란 무엇입니까? Access에서 데이터 소스에 연결된 모든 테이블을 (의식적으로) 연결하지 않았으므로 데이터 소스에서 데이터를 가져 오는 통과 쿼리를 사용합니다. 필자는 기사에서 지적한 논리를 보았지만 그 중 많은 부분이 표 링크 과정을 거치지 않았으므로 익숙하지 않습니다. –

    +0

    필자는 내 대답을 확장했다. - 실제로 uid/pass가 저장되지 않는다는 이유는 DSN을 사용하고 있다는 것입니다. - DSN에서 uid/pass가 예상됩니다 (DSN 부분을 제거하려고합니다 - uid/pass가 그대로 남아 있어야합니다). –

    관련 문제