이 SQL Server ODBC 연결을 작동 시키려면 어떻게합니까?


30

참고 : 서버 이름과 IP를 가상의 이름으로 변경했습니다.

무슨 일이야? MYSERVERMicrosoft SQL Server Express 2005를 실행 하는 서버를 가지고 있습니다 .이 서버 자체에서 ODBC 연결이 설정되어 있으며 이미 완벽하게 작동합니다. Windows 인증이 아닌 SQL Server 인증을 사용하여 로그인하면 다음과 같이 설정됩니다.

양호한 ODBC 연결 이미지

내가 말했듯이, 그 하나가 작동합니다. 그러나 다음으로, 완전히 다른 도메인에 있고 인트라넷이 아닌 다른 컴퓨터가 있는데 MYSERVER에서 호스팅되는 동일한 SQL Server에 액세스해야합니다. 다른 도메인에 있기 때문에 "MYSERVER"라는 이름을 인식하지 못합니다. MYSERVER의 IP 주소를 가리켜 야합니다. 123.456.789.012입니다. 그러나 ODBC 연결이 작동하지 않는 것 같습니다. 나는 이것을 다음과 같이 설정하려고 시도했다.

잘못된 ODBC 연결 이미지

작동하지 않습니다. 사용자 이름과 비밀번호를 입력하고 다음을 누르면 10 ~ 20 초 동안 멈추고 다음 오류가 발생합니다.

Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

같은 것을 시도했지만 "server"를 123.456.789.012\SQLEXPRESSplain old로 변경하면 123.456.789.012다른 오류가 발생합니다.

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

이제 네 생각을 알아 "1414 포트의 방화벽을 열지 않았을 것입니다." 내가 성공적으로 실행할 수 있기 때문에 내가 한 것을 제외하고 이것을 확인했습니다 .

telnet 123.456.789.012 1433

... 명령 줄에서 내가 원하는 모든 것. 그래서 어떻게해야할지 모르겠습니다. SQL Server가 존재하고 작동하며 ODBC 연결 을 올바르게 설정할 있다는 것을 알고 있습니다 . 연결 설정에서 이러한 오류가 발생하는 원인이 무엇인지 잘 모르겠습니다. 내가 나열된 후자의 오류에 따라 서버에 연결할 수는 있지만 인스턴스를 찾을 수없는 것 같습니다 (시간을 지정하지 않았기 때문에). 그렇다면 인스턴스 이름과 함께 IP를 지정하기 위해 다른 구문을 사용해야합니까? 어떻게해야합니까? 미리 감사드립니다.

답변:


18

SQL Server 2005의 명명 된 파이프 및 TCIP 프로토콜은 기본적으로 비활성화되어 있습니다. "SQL 서버 구성 관리자"에서이를 활성화 했습니까? 프로토콜은 SQL Server 네트워크 구성 및 SQL Native client xx 구성에서 찾을 수 있습니다.

"공유 메모리"프로토콜 덕분에 서버 자체의 연결이 작동합니다.


9
올바른 길로 안내했기 때문에 귀하의 답변을 수락합니다. SQL Server 구성 관리자에서 "SQL Server 2005 네트워크 구성> SQLEXPRESS 프로토콜"및 "SQL 기본 클라이언트 구성> 클라이언트 프로토콜"에서 TCP / IP가 이미 활성화되었습니다. 명명 된 파이프는 이미 후자에서 활성화되었습니다. 전자에서 활성화했지만 도움이되지 않는 것 같습니다 (같은 오류 메시지). 마지막으로, "SQL Server"드라이버 대신 "SQL Native Client"드라이버를 사용하도록 ODBC 소스를 전환했으며 결국 DID가 작동합니다.
soapergem

SoaperGEM 감사합니다! SQL Native Client를 사용해 본 적이 없었습니다! 매력처럼 일했다!
Phillip Senn

5

당신이 설정 한 SQL Server Browser 서비스를 따라 원격 연결을 허용하도록 SQL 서버 2005을 구성하는 방법 ?

인스턴스 이름을 사용하여 SQL Server 2005를 실행 중이고 연결 문자열에 특정 TCP / IP 포트 번호를 사용하지 않는 경우 SQL Server Browser 서비스를 사용하여 원격 연결을 허용해야합니다. 예를 들어 SQL Server 2005 Express는 기본 인스턴스 이름이 Computer Name \ SQLEXPRESS로 설치됩니다.


로컬의 서버 인스턴스에 원격으로 연결하는 것과 다른 메커니즘을 사용합니까 ??
Sam

@Sam은 Hakan Winther의 답변을 참조하십시오.
Sim

4

이 스레드 는 Access를 사용하여 MSSQL 2008 서버에 연결할 때 동일한 오류 메시지를 수정했습니다. MSSQL 2005 및 이전 버전은 연결 문자열에서 컴퓨터 이름을 사용하여 정상적으로 작동했지만 인스턴스가 2008로 업그레이드 될 때 전체 형식으로 액세스에서 연결 문자열로 변경해야했습니다.

servername\instancename,portnumber


2
포트 번호가 필요하지 않은 것을 제외하고는 저에게 도움이되었습니다.
bgmCoder

2

나는이 같은 문제가 있었고 SQL 드라이버를 SQL Native Client 드라이버로 변경하여 문제를 해결할 수있었습니다. 이것은 내 경우처럼 이것이 수년간 잘 작동 한 다음 작동을 멈춘 것처럼 이상했습니다. 나는 이것이 드라이버 라인을 따라 손상된 것으로 의심됩니다. 아마도 MDAC의 복원이 도움이 될 것입니다.


1

정규화 된 서버 이름을 인식합니까? MYSERVER.domain.com 인 경우? 우리는 다른 도메인에서 연결할 때 SQL Server를 사용해야했습니다. 데이터 소스를 테스트 할 때 ODBC 시스템 DSN을 연결할 수 있으면 진행 중입니다. ODBC 설정에서 연결되지 않으면 먼저 수정해야합니다.


데이터 소스를 테스트 할 때 ODBC 시스템 DSN이 처음에 연결되도록하기 위해 정확히 시도하고 있습니다. 그래서, 당신의 제안을 시도 모두를 시도 MYSERVER.domain.com\SQLEXPRESS하고 MYSERVER.domain.com, 그러나 그 모두는 나에게 내가 각각 위에 나열된 같은 오류를했다.
soapergem 2009

다른 컴퓨터의 명령 프롬프트에서 "nslookup MYSERVER.domain.com"을 입력하십시오. 올바른 IP 주소 (123.456.789.012) 또는 전혀 해결되지 않습니까?
Sim

@Sim-예, 해당 명령 올바르게 해결됩니다.
soapergem

1

작동하는 ODBC 연결에서 명명 된 파이프 또는 TCP를 사용하고 있습니까? TCP가 활성화되어 있습니까?


1

SQL 서버에 대해 원격 tcp connectios가 사용 가능한지 확인하십시오.


0

여기서 사소한 샷이지만 서버 이름이나 IP 주소 앞에 이중 백 슬래시를 넣으면 어떻게됩니까? 그것은 대부분의 다른 Windows / Microsoft 연결에 일반적으로 필요한 것 같습니다.


이중 백 슬래시를 시도하면 동일한 1326 오류 (처음 나열된 오류)가 발생합니다.
soapergem 2009

0

나는 비슷한 문제가 있었다. 필자의 경우 다른 sw가 ODBC 설정을 구성하므로 드라이버를 변경할 수 없습니다. 나는 다음과 같이 내 사건을 해결했다.

  1. 포트 1433을 사용하도록 서버의 TCP / IP 설정
  2. 클라이언트에서 다음과 같은 서버 주소를 입력하십시오. 192.168.1.5,1433 (인스턴스 이름 없음)

그런 다음 작동하기 시작했습니다. 클라이언트 OS : Win7 x64 드라이버 : sqlsrv32.dll


0

그만한 가치가 있기 때문에 이전에 작동했던 연결 에서이 오류가 발생하기 시작했습니다. MSSQL $ SQLEXPRESS 서비스가 어떻게 든 중지 된 것으로 나타났습니다. 다시 시작하면 문제가 해결되었습니다.


0

나도이 문제가 있었으며 다음과 같이 간단했습니다.이 서버의 기본 DNS 서버로 나열된 서버가 제거되었으며 앱이 더 이상 네트워크에서 SQL 서버의 이름을 올바르게 확인할 수 없었습니다. 로컬 DNS 서버를 작동하는 서버로 수정하면 모든 것이 즉시 다시 작동하기 시작했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.