2010-05-14 2 views
1

기존 VB6 응용 프로그램에는 INI 파일에 servername, databasename, username 등이 정의되어 있지만 연결 문자열 (기본값 1433)의 포트 번호는 다음과 같이 하드 코딩되어 있습니다. 앱. 그것은 다른 포트 번호에서 실행되는 새로운 SQL 서버 백엔드로 이동 중입니다. 중요한 재검사, 문서화 등을 수반하는 응용 프로그램을 변경하거나 다시 컴파일하지 않으려 고합니다. 새 서버에 대해 INI 파일을 변경하려고 시도했습니다. SERVERNAME \ INSTANCE, NEWPORTNUMBERSQL 서버 연결 문자열에 여러 포트가 나열되었습니다.

데이터 원본 = SERVERNAME \ INSTANCE, NEWPORTNUMBER, 1433;

이것은 앱을 실행할 때 데이터베이스에 연결될 때 올바르게 작동하는 것으로 보입니다. 1433 부분이 무시되고있는 것처럼 보입니다. 이것은 유효한 가정입니까, 아니면 제가 여기에 보이지 않는 어떤 문제를 일으킬 것입니까?

편집 : 연결 문자열이 VB6 코드에 내장되는 문자열 방법은 다음과 같습니다 INI 파일에서 가져온 서버 & DATABASE 값이

ConnectString = "Provider=MSDataShape;Trusted_Connection=Yes;Data Source=" & SERVER & ",1433;Initial Catalog=" & DATABASE & ";Data Provider=SQLOLEDB.1;Extended Properties=""Network=DBMSSOCN""" 

.

+0

이 문제를 해결하기 위해 무엇이 완료 되었습니까? 서버가 강제로 포트 1433을 사용 했습니까? 대량 교체 및 재 컴파일? SQL 별칭? – UnhandledExcepSean

+0

꽤 오래되었지만, 기억 하듯이, 포트 번호를 무시하고 SERVERNAME \ INSTANCE를 사용하는 것처럼 보였으므로 정상적으로 작동했습니다. 그래서 그대로 방치했습니다. – BBlake

답변

0

연결 문자열을 사용하는 모든 라이브러리가 필연적으로 동일한 방식으로 구문 분석하는지 확신하지 못합니다. 그 연결 문자열을 구문 분석하고 마지막 포트 번호를 버리는 하나의 라이브러리가있을 수 있으며 잘못된 포트 번호에 대해 오류를 던질 수있는 라이브러리가 있다고 생각합니다. 해당 라이브러리를 사용하는 라이브러리는 무엇입니까?

통합 보안을 사용하는 경우 INI 파일의 데이터 소스를 "SERVERNAME, PORT; Password ="로 설정하고 SQL 서버가 통합 보안에서 사용되지 않는 암호 키를 무시하도록 할 수 있습니다 . 연결 문자열을 구성하는 코드가 이와 같은 것을 확인하지 않는 경우입니다. 오, 윌 리 커드 (Will Rickards)는 이미 이렇게 말한 것 같습니다.

+0

VB6에서 표준 ADO 연결. – BBlake

0

일반적으로 포트 1433은 INSTANCENAME을 무시합니다.

  • 이 인스턴스 이름은 무시되고, 당신은 1433
  • 명명 된 인스턴스가 포트 1433
  • 에서 수신 대기 포트를 기본 인스턴스에 연결하는 ( MS blog Referenceanother)

    3 가지 옵션은 내가 참조

  • 당신은 (이것에 대해 확신하지 않음) 클라이언트 별칭
0

우리가 연결 문자열을 만드는 코드를 볼 수 있나요?

SQL Server에 연결하기 위해 TCP/IP를 사용해야하는 네트워크상의 이유가 있습니까?

제 생각에는 당신은 그냥; 서버 이름/인스턴스 이름 다음에 포트 번호를 모두 남겨 두십시오. 이로 인해 포트 번호가 연결 문자열의 관련없는 데이터가됩니다. 나는 단지 무시한다고 생각합니다. test.udl 파일을 작성하고 더블 클릭하여 연결 문자열을 직접 테스트 할 수 있습니다 - 마법사를 따르십시오. 완료 후 연결 문자열은 메모장에서 볼 수있는 udl 파일에 있습니다.

물론 연결 문자열 구문을 찾고 있다면 연결 문자열에서 찾을 수 있습니다.COM

+0

1433은 문자열을 작성하는 VB6 코드에 하드 코딩되어 있습니다. 앱을 다시 컴파일하지 않고 종료하지 않아도됩니다. – BBlake

+0

내 생각을 놓쳤다 고 생각하지만 위의 wqw의 대답을 본다. 라이브러리가 지정되었으므로 아마도 포트 번호를 전달해야합니다. 그러나 당신은 그것을 시험하지 않고 볼 수 있습니다. –

0
  1. 다운로드 무료 HEX 에디터
  2. 저장 어딘가에 원래의 exe의 사본 안전
  3. 열기
  4. 는 1,433 찾기와 새 포트 번호로 변경 HEX 편집기에서 EXE 작동되면

, 당신은
새 포트 뉴가 만약 (당신이 재 컴파일에서와 같이) 모든 것을 다시 테스트 할 필요가 없습니다 mber가 4 자리가 아니므로 더 까다 롭습니다 (최소 저항 경로 : 4 자리 포트로 변경)

이전에는이 ​​방법으로 연결 문자열을 변경했습니다. VB6 exe는 항상 DBCS를 사용하므로 올바른 방법으로 검색 기능을 사용하는 방법을 알아낼 때까지 16 진수 편집기를 사용해야 할 수 있습니다.

포트 번호가 정수로 저장되어 있으면 찾기가 까다 롭지 만 여전히 가능합니다 (단서를 찾기 위해 문자열을 찾으십시오).

+0

불행히도, 이것은 주요 기업 환경이고 여러 사용자에게 배포되는 앱이므로 옵션이 아닙니다. 미안하지만 내 설명에서 더 명확히하지 않았다. – BBlake

0

분명히이 앱은 빠르게 해킹됩니다. 간단한 연결 문자열 삽입으로 해킹하려고 시도하십시오. SERVER="{your_server},{your_port};FooBar="

관련 문제