programing

SQL Server Management Studio를 사용하여 Azure 가상 시스템에서 호스트되는 SQL Server Express 인스턴스에 원격으로 연결

yellowcard 2023. 5. 15. 21:28
반응형

SQL Server Management Studio를 사용하여 Azure 가상 시스템에서 호스트되는 SQL Server Express 인스턴스에 원격으로 연결

초기 시도

Windows Server 2012가 설치된 Azure VM은 SQL Server 2012 Express Database Engine 구성 요소를 방금 설치했습니다.그런 다음 여기에 나와 있는 지침에 따라 SQL Server Management Studio에 원격으로 연결했습니다.

  1. 가상 시스템에 대한 TCP 끝점 생성
  2. 윈도우즈 방화벽에서 TCP 포트 열기
  3. TCP 프로토콜에서 수신 대기하도록 SQL Server 구성
  4. 혼합 모드 인증을 위해 SQL Server 구성
  5. SQL Server 인증 로그인 만들기
  6. 가상 시스템의 DNS 이름 결정
  7. 다른 컴퓨터에서 데이터베이스 엔진에 연결

7단계 후 다음 오류가 발생했습니다.

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

원격으로 연결하기 전에 무엇을 더 구성해야 합니까?

문제 해결

저는 여기서 문제 해결 지침을 따르고 있습니다.아래의 각 블록 인용문은 해당 링크에 설명된 단계입니다.

SQL Server Database Engine 인스턴스가 설치되어 실행 중인지 확인합니다.

완료. SQL Server Express를 설치했으며 SQLEXPRESS라는 이름의 인스턴스로 실행되고 있습니다.

명명된 인스턴스에 연결하려는 경우 SQL Server Browser 서비스가 실행 중인지 확인합니다.

완료. 여기에 나와 있는 단계에 따라 SQL Server Browser 서비스를 설정했습니다.

시스템의 IP 주소를 가져옵니다.

완료. 나중에 연결 테스트 및 SQLEXPRESS의 정적 포트 설정에 사용할 수 있습니다.

10.241.62.155

fe80::45c:8c29:e19f:f78b%15

SQL Server에서 사용하는 TCP 포트 번호를 가져옵니다.

완료. SQL Server Management Studio 서버 로그에 서버가 포트 49169에서 수신 중임이 표시되었습니다.

프로토콜 사용

완료. 구성 관리자에서 이미 TCP/IP를 사용하도록 설정했지만, 만약을 위해 SQL Server 서비스를 다시 시작했습니다.

TCP/IP 연결 테스트 중

됐어요, tcping을 사용했어요exe를 사용하여 연결을 테스트합니다(cmdping은 Azure에서 빠르게 작동하지 않습니다).포트 80에 연결할 수 있었습니다.

  • tcping.exe buddha.cloudapp.net > 성공했습니다.
  • tcping.exe buddha.cloudapp.net 80 > 성공했습니다.

로컬 연결 테스트

완료. 명령 프롬프트에서 sqlcmd.exe를 사용하여 사용자 이름과 암호로 TCP를 통해 로컬로 연결할 수 있었습니다.

  • sqlcmd - S 부처님\SQLEXPRESS(공유 메모리 프로토콜을 통한 성공)
  • sqlcmd -Scp:Budda\SQLEXPRESS(TCP를 통한 성공)
  • sqlcmd -Scp:Buddy\SQLEXPRESS -USA -P(사용자 이름이 있는 TCP를 통한 성공)
  • sqlcmd -Scp:10.241.62.155\SQLEXPRESS -USA -P(내부 IP로 성공)

방화벽에서 포트 열기

우리는 SQLEXPRESS가 듣는 포트를 열었습니다.서버 로그(위)에 따르면 SQLEXPRESS는 포트 49169에서 수신 중이지만 이는 많은 동적 포트 중 하나일 뿐이며 정적 포트 1435를 설정하려고 했습니다.

  • WF.msc를 사용하여 포트 1435에 대한 인바운드 TCP 규칙을 만듭니다.
  • Azure Management Portal을 사용하여 포트 1435에 대한 TCP 끝점을 생성합니다.

문제 해결 지침에는 다음과 같은 내용도 나와 있습니다.

TCP 포트 1433이 아닌 다른 포트나 명명된 인스턴스에 연결하는 경우 SQL Server Browser 서비스에 대한 UDP 포트 1434도 열어야 합니다.

SQLEXPRESS(이름이 지정된 인스턴스)를 연결하고 있기 때문에 UDP용 포트 1434를 열어야 했습니다.

  • WF.msc를 사용하여 포트 1434에 대한 인바운드 UCP 규칙을 만듭니다.
  • Azure 관리 포털을 사용하여 포트 1434에 대한 UDP 끝점 생성

명명된 인스턴스에 연결하는 방법에 대한 추가 연구에서 동적 포트 문제가 발견되었습니다.우리가 포트 49169 대신 포트 1435(정적)를 사용하는 이유(여러 가지 효과적인 옵션 중 하나)

SQL Server Express의 인스턴스, SQL Server Compact 및 데이터베이스 엔진의 명명된 인스턴스는 동적 포트를 사용합니다.이러한 인스턴스가 특정 포트를 사용하도록 구성하려면 특정 TCP 포트(SQL Server Configuration Manager)에서 수신 대기하도록 서버 구성을 참조하십시오.그리고 여기.

완료. SQL Configuration Manager > SQL Server Network Configuration > Protocols for SQLEXPRESS > TCP/IP로 이동하여 다음을 수행했습니다.

Protocol Tab > Listen All > NO.

나열된 각 주소에 대한 IP 주소 탭 >

  • 사용 > 예
  • TCP 동적 포트 > 공백(0 삭제)
  • TCP 포트 > 1435(또는 원하는 항목)

SQLEXPRESS 서비스를 다시 시작한 후 SQL Server Management Studio 로그를 다시 살펴보니 서버가 포트 1435에서 수신 중입니다!만세!

연결 테스트

완료. 로컬(비 Azure) 컴퓨터에서 SQL Server Management Studio를 열고 연결했습니다.

  • buddha.cloudapp.net , 1435 또는 buddha.cloudapp.net \SQLEXPRESS
  • 비밀번호

성공.

네임 파이프 공급자로부터 오류가 발생한다는 사실은 연결을 설정할 때 TCP/IP 프로토콜을 사용하지 않는다는 것을 나타냅니다."tcp" 접두사를 추가하고 포트 번호를 지정해 보십시오.

tcp:name.cloudapp.net,1433

여기 우리가 답을 찾은 세 개의 웹 페이지가 있습니다.가장 어려웠던 부분은 SQLEXPRESS의 정적 포트를 설정하는 것이었습니다.

윈도우즈 Azure에서 SQL Server 가상 시스템 프로비저닝이러한 초기 지침은 응답의 25%를 제공했습니다.

SQL Server 데이터베이스 엔진 연결 문제 해결 방법이것을 주의 깊게 읽었을 때 답의 또 다른 50%가 제공되었습니다.

서로 다른 IP 주소의 서로 다른 포트에서 수신하도록 SQL 서버를 구성하는 방법?이를 통해 명명된 인스턴스(예: SQLEXPRESS)에 대한 정적 포트를 설정할 수 있었습니다. 이를 통해 최종 25%의 응답률을 달성할 수 있었습니다.

저도 비슷한 문제로 고생했어요.실제 문제는 다른 컴퓨터에서 실행되는 SQL Express 인스턴스에 연결하는 것입니다.이를 위한 단계는 다음과 같이 요약할 수 있습니다.

  1. SQL Express가 윈도우즈 인증(기본값)뿐만 아니라 SQL 인증에도 구성되어 있는지 확인합니다.이 작업은 SQL Server Management Studio(SSMS) 서버 속성/보안을 통해 수행합니다.
  2. SSMS에서 "sqlUser"라는 새 로그인을 만듭니다. 예를 들어, 적절한 암호 "sql"을 사용합니다.이 새 로그인이 Windows 인증이 아닌 SQL 인증으로 설정되었는지 확인합니다.SSMS 서버 보안/로그인/속성/일반.또한 "암호 정책 시행"이 선택되지 않았는지 확인합니다.
  3. 속성/서버 역할에서 이 새 사용자에게 "sysadmin" 역할이 있는지 확인합니다.
  4. SQL Server Configuration Manager SSCM(Windows\Sys에서 SQLServerManagerxx.msc 파일 검색)WOW64) SQL Server Network Configuration/Protocols for SQL Express에서 SSCM(SSCM)을 찾을 수 없는 경우 TCP/IP를 사용하도록 설정해야 합니다.원하는 경우 명명된 파이프를 비활성화할 수 있습니다.
  5. 프로토콜 TCP/IP를 마우스 오른쪽 버튼으로 클릭하고 IP 주소 탭에서 모든 IP 주소가 사용으로 설정되어 있는지, TCP 포트 1433(SQL Server의 기본 포트)으로 설정되어 있는지 확인합니다.
  6. Windows 방화벽(WF.msc)에서 SQL Server용과 SQL Browser Service용 두 개의 새 인바운드 규칙을 만듭니다.SQL Server의 경우 TCP 포트 1433(SQL Server의 기본 포트를 사용하는 경우)을 열어야 하며, SQL Browser Service의 경우 UDP 포트 1434를 열어야 합니다.방화벽에서 이 두 규칙의 이름을 적절하게 지정합니다.
  7. SSCM 또는 Services.msc 스냅인을 사용하여 SQL Server 서비스를 중지하고 다시 시작합니다.
  8. Services.msc 스냅인에서 SQL Browser Service 시작 유형이 자동인지 확인한 다음 이 서비스를 시작합니다.

이때 SQL 인증을 사용하여 사용자 "sqlUser" 암호 "sql"을 위와 같이 구성된 SQL Express 인스턴스에 원격으로 연결할 수 있어야 합니다.이 문제를 쉽게 확인할 수 있는 마지막 팁은 를 사용하여 빈 텍스트 파일을 만드는 것입니다.UDL 확장명을 "테스트"라고 말합니다.바탕 화면에 "UDL"이 표시됩니다.이 파일을 편집하기 위해 두 번 클릭하면 원격 SQL 연결을 빠르게 테스트할 수 있는 Microsoft Data Link Properties 대화 상자가 호출됩니다.

언급URL : https://stackoverflow.com/questions/15956465/use-sql-server-management-studio-to-connect-remotely-to-an-sql-server-express-in

반응형