SQL Server Express 2012에 대한 원격 연결 사용


403

방금 홈 서버에 SQL Server Express 2012를 설치했습니다. 데스크톱 PC의 Visual Studio 2012에서 연결하려고하는데 잘 알려진 오류가 반복적으로 발생합니다.

SQL Server에 연결하는 동안 네트워크 관련 또는 인스턴스 별 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스 할 수 없습니다. 인스턴스 이름이 올 바르고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인하십시오. (제공자 : 명명 된 파이프 공급자, 오류 : 40-SQL Server에 대한 연결을 열 수 없음)

이 문제를 해결하기 위해 내가 한 일 :

  • 서버에서 SQL Server 구성 관리자를 실행하고 SQL Server Browser를 활성화하십시오.
  • 로컬 서브넷의 TCP 포트 1433 및 1434에 대해 서버에서 Windows 방화벽 예외를 추가하십시오.
  • 데스크톱에서 로그인 한 사용자의 SQL Server 인스턴스에 로그인했는지 확인하십시오.
  • SQL Server 인스턴스에서 Windows 인증을 사용하고 있는지 확인하십시오.
  • SQL Server와 전체 Dang 서버를 반복해서 다시 시작하십시오.
  • 머리카락을 모두 빼내십시오.

원격 연결을 허용하도록 SQL Server 2012 Express를 어떻게 구할 수 있습니까?


7
SQL Server Browser 서비스를 활성화하여 해결했습니다. : D. 게시 해 주셔서 감사합니다.
alansiqueira27.

1
1433 UDP 포트를 잠금 해제하면 도움이되었습니다!
Michael

1
그리고 Azure VM을 사용하는 경우 Azure 관리 포털 (VM 자체 방화벽에 대한 외부 방화벽 역할을 함)을 통해 포트를 여는 것을 잊지 마십시오. 이렇게 : stackoverflow.com/questions/34251382/…
jleach

최신 버전에서 Sql Server 구성 관리자가 사라진 부분이 궁금
하다면

답변:


731

음, 다행 내가 물었다 . 내가 마침내 발견 한 해결책은 다음과 같습니다.

포트 1433에서 원격 TCP / IP 연결을 허용하도록 SQL Server Express를 어떻게 구성합니까?

  1. SQL Server 구성 관리자를 실행하십시오.
  2. SQL Server 네트워크 구성> SQLEXPRESS 프로토콜로 이동하십시오.
  3. TCP / IP가 사용 가능한지 확인하십시오.

지금까지는 훌륭하고 완전히 기대했습니다. 하지만:

  1. TCP / IP를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오 .
  2. IP2에서 IP 주소가 로컬 서브넷의 컴퓨터 IP 주소로 설정되어 있는지 확인하십시오.
  3. IPAll로 스크롤하십시오.
  4. TCP 동적 포트비어 있는지 확인하십시오 . (광산은 5 자리 포트 번호로 설정되었습니다.)
  5. TCP 포트1433 으로 설정되어 있는지 확인하십시오 . (내가 비어있었습니다.)

(이 단계를 수행 한 경우에도, 그건 하지 SQL 서버 브라우저를 사용하는 것이 필요하고, 만, 포트 1433을 할 수 있도록 1434을 필요가 없습니다)

이 여분의 5 단계는 이전 버전의 SQL Server, Express 등에서 수행해야 할 일을 기억할 수없는 것입니다. 기본 인스턴스 대신 서버에서 명명 된 인스턴스 (myservername \ SQLEXPRESS)를 사용하고 있기 때문에 필요한 것으로 보입니다. 여기를 봐:

특정 TCP 포트에서 수신 대기하도록 서버 구성 (SQL Server 구성 관리자)


7
SQL Server Express가 유일한 인스턴스가 아닌 경우 다른 인스턴스에서 포트 1433을 UNASSIGN해야 할 수도 있습니다. 2008 R2 기본 인스턴스 (MSSQLSERVER)가 있고 외부에서 두 인스턴스에 모두 연결할 수있는 유일한 방법은 포트 1433을 2012 인스턴스 (위)에 할당하고 이전 기본 인스턴스의 포트 할당을 TCP Dynamic으로 변경하는 것입니다. 포트 = "0"및 TCP 포트 = ""(공백). 다른 방법으로 수행하면 기본 인스턴스에만 액세스 할 수 있습니다.
Robert Calhoun

17
IPAll설정은 구주 조언이었습니다! 광산 ... 당신 같았다 : D
Leniel Maccaferri

18
다른 사람에게 도움이되는 경우 ...이 도움이되었지만 SQL Server Browser 서비스를 시작하기 전까지는 여전히 연결할 수 없었습니다. (참고 : 어떤 이유로 SQL Server Browser 서비스의 시작 유형이 "사용 안 함"이므로 Windows "서비스"응용 프로그램으로 이동해야했습니다. 시작 유형을 "자동"으로 변경하고 서비스를 시작한 후 연결할 수).
수은

9
SQLEXPRESS 인스턴스에 설치된 Windows 8 및 SQL 2012 Express SP1에서 동적 포트를 공백이 아닌 다른 것으로 설정해야합니다 (삭제 한 경우 0으로 설정하면 새로운 임의 포트가 다시 계산됩니다). 고급 방화벽 제어판의 1433 및 UDP 1434 수신 포트 규칙. 동적 포트가 비어 있으면 SQL Server는 시작시 중단되었습니다.
Tony Wall

10
그냥 감사하고 공감하고 싶었습니다. 당신은 저에게 많은 시간을 절약했습니다. 올바른 연결 구문으로 게시물을 업데이트 하시겠습니까? myserver\sqlexpress,[portnumber]괄호없이 사용해야 합니다. 그것이 주목 ,하지:
마르코

105

UDP 포트 1434를 열고 SQL Server Browser 를 사용 하지 않고 원격 SQL Server에 연결하는 올바른 방법 은 named instance 대신 ip 및 port 를 사용하는 것입니다 .

명명 된 인스턴스 대신 ip 및 port를 사용하는 것도 공격 노출 영역을 줄이므로 더 안전합니다.

아마도 2 장의 그림은 2000 단어를 말합니다 ...

이 방법은 지정된 포트를 사용합니다 (이것은 대부분의 사람들이 원하는 것입니다.)

여기에 이미지 설명을 입력하십시오

이 방법을 사용하려면 UDP 포트 1434와 SQL Server Browser가 실행 중이어야합니다.

여기에 이미지 설명을 입력하십시오


이것이 "올바른"방법이라고 말함으로써 당신이 의미하는 바를 자세히 설명 할 수 있습니까?
Ryan Lundy

3
@Kyralessa Ha! ... 이제 원격 인스턴스에 연결하려고 시도하는 4-5 시간의 머리카락을 마신 후 다시 술에 취해 졌으므로 여기의 '정확한'이 내 맥락에서 읽히는 것을 의미한다고 설명해야합니다. SQL Server Browser를 사용하도록 설정하지 않았기 때문에 인스턴스 이름을 사용하여 연결하는 것이 '올바르지 않습니다'.
Rosdi Kasim 2016 년

오해를 피하기 위해 답변에 설명을 추가했습니다.
Rosdi Kasim 2016 년

1
감사합니다;) 브라우저 서비스를 실행할 권한이 없으면 포트를 지정해야합니다.
Arman McHitarian

3
MS는 포트 번호의 분리 자로 열 대신 쉼표를 사용한다는 것을 보여주기 위해 1을 더했습니다
Jorj

32

하나 더...

Kyralessa는 훌륭한 정보를 제공하지만이 기사를 읽은 후에도 문제가 발생한 부분을 추가해야합니다.

SQL Server 네트워크 구성> 서버 프로토콜> TCP / IP 사용에서. TCP / IP를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. IP 주소 아래에서 사용중인 각 연결 유형에 대해 사용을 예로 설정해야합니다.

여기에 이미지 설명을 입력하십시오


18

이를 사용하여이 문제를 해결할 수 있습니다.

시작> EXECUTE로 이동하여 CLICONFG.EXE를 실행 하십시오.

Named Pipes 프로토콜이 목록의 첫 번째가되며,이를 삭제하고 TCP / IP를 승격시킵니다.

응용 프로그램을 철저히 테스트하십시오.

도움이 되었기를 바랍니다.


와우, 무슨 보석 ... 감사합니다. 존재조차 알지 못했습니다.
Louis van Tonder

1
이는 CLIENT 가 서버가 아닌 TCP / IP를 사용 하도록 구성 합니다.
mcr

세상에, 그것은 작동한다 !! 이 답변에 투표하기 위해 로그인했습니다. 감사
Aki

15

설정할 수도 있습니다

NO를 모두 들어보세요

프로토콜 대화 상자에서 IP 주소 IP1 (예)

enabled로 설정하고

yr IP 주소 정의

TCP Dynamic을 Blank로 설정하고

TCP 포트 1433 (또는 기타)


SQL 2012 Express SP1이 설치된 Windows 8.1에서이 작업을 수행하면 시작시 SQL이 중단되었습니다. (
Zhaph-Ben Duguid

모든 IP 항목 1, 2, ...을 활성화 + 활성, 지워진 동적, 지워진 포트로 설정하고 IPAll 포트를 1433으로 설정 한 다음 방화벽에서 TCP 1433 및 UPD 1434를 여는 규칙을 추가해야했습니다 (1434). 이름을 사용하지 않고 포트 번호 만 사용하는 경우에는 필요하지 않습니다.
Mordachai


11

최근 에이 문제가 발생했습니다. 2015 년 8 월

SQL Server 구성 관리자 를 열어서 해결

  • SQL Server 네트워크 구성-> SQLEXPRESS 프로토콜
  • TCP / IP-> IP 주소 탭의 특성
  • 모든 것이 기본값으로 유지되며 IPALL : TCP 포트만 1433으로 설정

SQL Server Manager 를 사용하여 컴퓨터에 연결할 수 있습니다 . [hostaddress], 1433

예:

여기에 이미지 설명을 입력하십시오


6

기본 설정으로 설치된 SQL Server 2012 Developer Edition을 설치할 때 SQL Server 구성 관리자-> SQL Server 네트워크 구성-> MSSQLSERVER 프로토콜을로드하고 TCP / IP를 Disabled에서 Enabled로 변경해야했습니다.


1
빠른 참고 사항 : 저에게는 이것이 효과가 없었습니다. 어떤 이유로 잘못된 IP가있었습니다. 그러나 Kyralessa의 단계는 IP 업데이트를 불식 시켰기 때문에 속임수를 사용했습니다.
Brian MacKay

이것은 내 서버 중 하나에서는 작동하지만 다른 서버에서는 작동하지 않습니다.
cheny

5

UDP 포트 1434를 열기 위해 방화벽 인바운드 포트 규칙을 추가해야했습니다. 이것이 Sql Server Browser가 수신하는 것입니다.


3

"Rosdi Kasim"방식은 IP에 대한 세부 구성이 필요하지 않기 때문에 선호합니다.

다른 서버를 다시 켜려고 할 때 다시 잊어 버릴 것입니다.

Sql Server Browser 서비스를 활성화하여 간단하게 바보 (KISS)로 유지 한 다음 서버를 연결할 때 IP 뒤에 \ SQLEXPRESS를 추가하십시오.

"\ SQLEXPRESS"없이 IP를 직접 사용하는 것은 기본 포트를 사용하지 않기 때문에 실패한 지점이었습니다.

감사.


3

로컬에 명명 된 인스턴스를 설치 한 SQL Server 2014와 동일한 문제가있었습니다. (가) 사용하여 연결 FQDN\InstanceName단지 내 사용하여 연결하는 동안, 실패 hostname\InstanceName했다. 예를 들어 : 연결을 사용하여 연결 mycomputername\sql2014했지만 사용 mycomputername.mydomain.org\sql2014하지 않았습니다. DNS가 올바르게 해결되었고 SQL Configuration Manager 내에서 TCP / IP가 활성화되었고 Windows 방화벽 규칙이 추가 된 후 테스트를 위해 방화벽을 꺼서 아무것도 차단하지 않았지만 문제를 해결 한 것은 없었습니다.

마지막으로 SQL Server 에서 " SQL Server Browser "서비스 를 시작해야 했으며 연결 문제가 해결되었습니다.

SQL Server Browser 서비스가 실제로 SQL Server가 연결하는 데 도움이되었다는 것을 결코 알지 못했습니다. 나는 당신이 연결하기 위해 "더 많은 브라우즈"서버를 클릭했을 때 드롭 다운을 채우는 데 도움이되었다는 인상을 받았지만, 포트 번호가 명시 적으로 할당되지 않은 경우 클라이언트 요청을 올바른 포트 번호에 맞추는 데 실제로 도움이된다 웹 사이트 바인딩이 여러 웹 사이트를 호스팅하는 IIS 웹 서버에서 동일한 문제를 완화하는 데 도움이되는 방법).

이 연결 항목은 SQL Server Browser 서비스에 대한 힌트를 제공 한 것입니다. https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine- 이름

  • wstst05 \ sqlexpress를 서버 이름으로 사용하는 경우 클라이언트 코드는 시스템 이름과 인스턴스 이름을 구분하고 wstst05는 netbios 이름과 비교됩니다. 일치하는 데 아무런 문제가 없으며 연결은 로컬로 간주됩니다. 거기에서, 우리는 필요한 정보 검색 없이 아무 문제없이 SQL 브라우저 및 공유 메모리를 통해 SQL 인스턴스에 연결 연락을.
  • wstst05.capatest.local \ sqlexpress를 사용하면 클라이언트 코드가 이름 (wstst05.capatest.local)과 netbios 이름 (wstst05)의 비교에 실패하고 연결 "원격"을 고려합니다. 이것은 의도적으로 설계된 것이며 향후 개선을 고려할 것입니다. 어쨌든, 연결 원격과 이름이 지정된 인스턴스라는 사실을 고려하여 클라이언트는 이름 확인에 SQLBrowser를 사용해야한다고 결정합니다. wstst05.capatest.local (UDP 포트 1434)에서 SQL 브라우저에 연결하려고 시도하고 해당 부분이 실패한 것 같습니다. 따라서 오류가 발생합니다.

TechNet의 "SQL Server Browser"서비스 이유 (강조 추가) : https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx

"SQL Server 브라우저 사용"섹션에서 :

SQL Server Browser 서비스가 실행되고 있지 않은 경우 올바른 포트 번호 또는 명명 된 파이프를 제공하면 여전히 SQL Server에 연결할 수 있습니다. 예를 들어 포트 1433에서 실행중인 경우 TCP / IP를 사용하여 SQL Server의 기본 인스턴스에 연결할 수 있습니다. 그러나 SQL Server Browser 서비스가 실행되고 있지 않으면 다음 연결이 작동하지 않습니다 .

  • 모든 매개 변수 (예 : TCP / IP 포트 또는 명명 된 파이프)를 완전히 지정하지 않고 명명 된 인스턴스에 연결을 시도하는 구성 요소 .
  • 나중에 다른 구성 요소가 다시 연결하는 데 사용할 수있는 서버 / 인스턴스 정보를 생성하거나 전달하는 모든 구성 요소
  • 포트 번호 또는 파이프를 제공하지 않고 명명 된 인스턴스에 연결
  • TCP / IP 포트 1433을 사용하지 않는 경우 명명 된 인스턴스 또는 기본 인스턴스에 대한 DAC
  • OLAP 리디렉터 서비스
  • SQL Server Management Studio, Enterprise Manager 또는 Query Analyzer에서 서버 열거

클라이언트 서버 시나리오에서 SQL Server를 사용하는 경우 (예 : 응용 프로그램이 네트워크를 통해 SQL Server에 액세스하는 경우 ) SQL Server Browser 서비스를 중지하거나 비활성화하면 각 인스턴스에 특정 포트 번호를 할당해야합니다. 항상 해당 포트 번호를 사용하도록 클라이언트 애플리케이션 코드를 작성하십시오. 이 방법에는 다음과 같은 문제가 있습니다 .

  • 클라이언트 응용 프로그램 코드가 올바른 포트에 연결되도록 업데이트하고 유지 보수해야합니다.
  • 각 인스턴스에 대해 선택한 포트가 서버의 다른 서비스 나 응용 프로그램에서 사용되어 SQL Server 인스턴스를 사용할 수 없게됩니다.

"SQL Server Browser의 작동 방식"섹션에있는 동일한 기사의 추가 정보 :

SQL Server 인스턴스 하나만 포트 또는 파이프를 사용할 수 있기 때문에SQL Server Express를 포함하여 명명 된 인스턴스에 다른 포트 번호와 파이프 이름이 할당됩니다. 기본적으로 명명 된 인스턴스와 SQL Server Express는 모두 동적 포트를 사용하도록 구성됩니다. 즉, 사용 가능한 포트는 SQL Server가 시작될 때 할당됩니다. 원하는 경우 특정 포트를 SQL Server 인스턴스에 할당 할 수 있습니다. 연결시 클라이언트는 특정 포트를 지정할 수 있습니다. 그러나 포트가 동적으로 할당되면 SQL Server가 다시 시작될 때마다 포트 번호가 변경 될 수 있으므로 클라이언트가 올바른 포트 번호를 알 수 없습니다. ... SQL Server 클라이언트가 SQL Server 리소스를 요청하면 클라이언트 네트워크 라이브러리는 포트 1434를 사용하여 서버에 UDP 메시지를 보냅니다. SQL Server Browser는 TCP / IP 포트 또는 요청 된 인스턴스의 명명 된 파이프로 응답합니다.


2

Configuration Manager를 통해 포트를 추가하고 SQL 연결 [host] \ [db 인스턴스 이름], 1433에 포트 번호를 추가해야했습니다.

instancename과 port 사이의, (쉼표)에 유의하십시오


1

나는 지금까지 언급 한 모든 답변과 다른 문제가있었습니다!

SQL Server Express가 아니라 Visual Studio에서 사용한다고 말하면서 시작해야하지만 솔루션은 정확히 동일해야합니다.

글쎄, 신, 그것은 실제로 매우 간단하고 어리석은 것일 수 있습니다. 데이터베이스를 만들려고 시도하고 Visual Studio에서 SQL Server의 이름을 제안하면 Windows 사용자 이름이 부여되었으며 실제로는 서버 이름이므로 사용하려고했습니다.

실제로 그것은 실제로 내 Windows 사용자 이름 + \SQLEXPRESS였습니다. 설정을 변경하지 않았다면 아마도 귀하의 설정일 것입니다. 작동하면 읽기를 중지하십시오. 이것이 나의 대답이다. 작동하지 않으면 이름이 다를 수 있습니다.

나와 같이 Visual Studio에서이 문제가 발생한 경우 다음 단계를 수행하십시오.

  1. SQL Server Management Studio 아이콘을 엽니 다 .
  2. 서버가 보이지 않으면 (기본적으로 왼쪽에 도킹되어 있음)을 누르 F8거나 보기-> 개체 탐색기로 이동하십시오 .
  3. 서버 이름을 마우스 오른쪽 버튼으로 클릭하고 속성 (마지막 항목)을 선택하십시오.
  4. 왼쪽 하단에서 " 서버 " 아래에 서버의 실제 이름이 표시됩니다 (연결이 아니라 그 위에 있음).

이것은 서버의 이름이며 연결을 시도해야합니다! Visual Studio가 제안하는 것이 아닙니다!



1

필자의 경우 데이터베이스는 비표준 포트에서 실행 중이었습니다. 연결중인 포트가 데이터베이스가 실행중인 포트와 동일한 지 확인하십시오. SQL Server 인스턴스가 더 있으면 올바른 것을 확인하십시오.


0

서버 방화벽에서 관련 포트를 열기 만하면됩니다.


6
불행히도, 이것이 "당신이해야 할 전부"는 아닙니다. 위의 승인 된 답변에 요약 된대로 수행해야 할 다른 몇 가지 단계가 있습니다.
saluce

2
사실, 내 경우에는이 작업이 필요했기 때문에 불공평하게 표시되고 실제로 유용한 입력이되었습니다.
MagicalArmchair

1
포트 1433을 여는 규칙을 추가하면 문제가 해결되었습니다.
GiddyUpHorsey 2

"많은 일들이 일렬로 정렬되어야하는데, 어떤 추가 단계가 필요한지가 다를 것"이라고 말하는 것이 공정하다고 생각합니다.
Mordachai

Windows 10에서 SQL을 제공하기 전에 Kyralessa와 Pete 및이 모든 작업을 수행해야했습니다.
alfadog67

0

SQL Server에 연결하는 데 문제가 있습니까?

방화벽 연결을 해제하십시오.

방화벽 연결이 끊긴 상태에서 연결할 수있는 경우 "sql service broker"와 같은 일부 입력 규칙을 놓치면이 입력 규칙을 방화벽에 추가하십시오.

"SQL 관리자 연결"TCP 포트 1434

"SQL 관리자 연결"UDP 포트 1434

"SQL ANALYSIS 서비스"TCP 포트 2383

"SQL 찾아보기 분석 서비스"TCP 포트 2382

"SQL DEBUGGER / RPC"TCP 포트 135

동적 포트가있는 경우 "SQL SERVER"TCP PORT 1433 및 기타

"SQL SERVICE BROKER"TCP 포트 4022

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