웹 배포 게시용 데이터베이스 서버 구성

작성자: Jason Lee

이 항목에서는 웹 배포 및 게시를 지원하도록 SQL Server 2008 R2 데이터베이스 서버를 구성하는 방법을 설명합니다.

이 항목에 설명된 작업은 모든 배포 시나리오에 공통적으로 적용됩니다. 웹 서버가 IIS 웹 배포 도구(웹 배포) 원격 에이전트 서비스, 웹 배포 처리기 또는 오프라인 배포를 사용하도록 구성되어 있는지 또는 애플리케이션이 단일 웹 서버 또는 서버 팜에서 실행 중인지는 중요하지 않습니다. 데이터베이스를 배포하는 방법은 보안 요구 사항 및 기타 고려 사항에 따라 변경 될 수 있습니다. 예를 들어 샘플 데이터를 사용하거나 사용하지 않고 데이터베이스를 배포할 수 있으며, 사용자 역할 매핑을 배포하거나 배포 후에 수동으로 구성할 수 있습니다. 그러나 데이터베이스 서버를 구성하는 방법은 동일하게 유지됩니다.

웹 배포를 지원하도록 데이터베이스 서버를 구성하기 위해 추가 제품 또는 도구를 설치할 필요가 없습니다. 데이터베이스 서버와 웹 서버가 다른 컴퓨터에서 실행한다고 가정하면 다음을 수행해야 합니다.

  • SQL Server TCP/IP를 사용하여 통신할 수 있도록 허용합니다.
  • 모든 방화벽을 통해 SQL Server 트래픽을 허용합니다.
  • 웹 서버 컴퓨터 계정에 SQL Server 로그인을 제공합니다.
  • 컴퓨터 계정 로그인을 필요한 데이터베이스 역할에 매핑합니다.
  • 배포를 실행할 계정에 SQL Server 로그인 및 데이터베이스 작성자 권한을 부여합니다.
  • 반복 배포를 지원하려면 배포 계정 로그인을 db_owner 데이터베이스 역할에 매핑합니다.

이 항목에서는 이러한 각 절차를 수행하는 방법을 보여 줍니다. 이 항목의 작업 및 연습에서는 Windows Server 2008 R2에서 실행되는 SQL Server 2008 R2의 기본 instance 시작한다고 가정합니다. 계속하기 전에 다음을 확인합니다.

  • Windows Server 2008 R2 서비스 팩 1 및 사용 가능한 모든 업데이트가 설치됩니다.
  • 서버가 도메인에 가입되어 있습니다.
  • 서버에 고정 IP 주소가 있습니다.
  • SQL Server 2008 R2 서비스 팩 1 및 사용 가능한 모든 업데이트가 설치됩니다.

SQL Server instance 모든 SQL Server 설치에 자동으로 포함된 데이터베이스 엔진 서비스 역할만 포함하면 됩니다. 그러나 구성 및 유지 관리의 용이성을 위해 관리 도구 – 기본관리 도구 – 전체 서버 역할을 포함하는 것이 좋습니다.

참고

컴퓨터를 도메인에 조인하는 방법에 대한 자세한 내용은 도메인에 컴퓨터 조인 및 로그온을 참조하세요. 고정 IP 주소 구성에 대한 자세한 내용은 고정 IP 주소 구성을 참조하세요. SQL Server 설치에 대한 자세한 내용은 SQL Server 2008 R2 설치를 참조하세요.

원격 액세스를 사용하도록 설정하여 SQL Server

SQL Server TCP/IP를 사용하여 원격 컴퓨터와 통신합니다. 데이터베이스 서버와 웹 서버가 다른 컴퓨터에 있는 경우 다음을 수행해야 합니다.

  • TCP/IP를 통한 통신을 허용하도록 SQL Server 네트워킹 설정을 구성합니다.
  • SQL Server instance 사용하는 포트에서 TCP 트래픽(그리고 경우에 따라 UDP(사용자 데이터그램 프로토콜) 트래픽)을 허용하도록 하드웨어 또는 소프트웨어 방화벽을 구성합니다.

SQL Server TCP/IP를 통해 통신할 수 있도록 하려면 SQL Server 구성 관리자 사용하여 SQL Server instance 대한 네트워크 구성을 변경합니다.

SQL Server TCP/IP를 사용하여 통신할 수 있도록 하려면

  1. 시작 메뉴에서 모든 프로그램을 가리키고 Microsoft SQL Server 2008 R2를 클릭하고 구성 도구를 클릭한 다음 SQL Server 구성 관리자 클릭합니다.

  2. 트리 뷰 창에서 SQL Server 네트워크 구성을 확장한 다음 MSSQLSERVER에 대한 프로토콜을 클릭합니다.

    참고

    여러 SQL Server 인스턴스를 설치한 경우 각 instance 대한[instance 이름] 항목에 대한 프로토콜이 표시됩니다. instance instance 기준으로 네트워크 설정을 구성해야 합니다.

  3. 세부 정보 창에서 TCP/IP 행을 마우스 오른쪽 단추로 클릭한 다음 사용을 클릭합니다.

    세부 정보 창에서 TCP/IP 행을 마우스 오른쪽 단추로 클릭한 다음 사용을 클릭합니다.

  4. 경고 대화 상자에서 확인을 클릭합니다.

    경고 대화 상자에서 확인을 클릭합니다.

  5. 새 네트워크 구성이 적용되기 전에 MSSQLSERVER 서비스를 다시 시작해야 합니다. 명령 프롬프트, 서비스 콘솔 또는 SQL Server Management Studio 이 작업을 수행할 수 있습니다. 이 절차에서는 SQL Server Management Studio 사용합니다.

  6. SQL Server 구성 관리자를 닫습니다.

  7. 시작 메뉴에서 모든 프로그램을 가리키고 Microsoft SQL Server 2008 R2를 클릭한 다음 SQL Server Management Studio 클릭합니다.

  8. 서버에 연결 대화 상자의 서버 이름 상자에 데이터베이스 서버의 이름을 입력한 다음 연결을 클릭합니다.

    서버에 연결 대화 상자의 서버 이름 상자에 데이터베이스 서버의 이름을 입력한 다음 연결을 클릭합니다.

  9. 개체 탐색기 창에서 부모 서버 노드(예: TESTDB1)를 마우스 오른쪽 단추로 클릭한 다음 다시 시작을 클릭합니다.

    개체 탐색기 창에서 부모 서버 노드(예: TESTDB1)를 마우스 오른쪽 단추로 클릭한 다음 다시 시작을 클릭합니다.

  10. Microsoft SQL Server Management Studio 대화 상자에서 예를 클릭합니다.

    Microsoft SQL Server Management Studio 대화 상자에서 예를 클릭합니다.

  11. 서비스가 다시 시작되면 SQL Server Management Studio 닫습니다.

방화벽을 통해 SQL Server 트래픽을 허용하려면 먼저 SQL Server instance 사용 중인 포트를 알아야 합니다. 이는 SQL Server instance 만들어지고 구성된 방법에 따라 달라집니다.

  • SQL Server 기본 instance TCP 포트 1433에서 요청을 수신하고 응답합니다.
  • 명명된 SQL Server instance 동적으로 할당된 TCP 포트에서 요청을 수신하고 응답합니다.
  • SQL Server Browser 서비스를 사용하는 경우 클라이언트는 UDP 포트 1434에서 서비스를 쿼리하여 특정 SQL Server instance 사용할 TCP 포트를 확인할 수 있습니다. 그러나 이 서비스는 보안상의 이유로 비활성화되는 경우가 많습니다.

기본 instance SQL Server 사용한다고 가정하면 트래픽을 허용하도록 방화벽을 구성해야 합니다.

Direction 포트에서 포트로 포트 유형
인바운드 모두 1433 TCP
아웃바운드 1433 모두 TCP

참고

기술적으로 클라이언트 컴퓨터는 1024년에서 5000년 사이에 임의로 할당된 TCP 포트를 사용하여 SQL Server 통신하고 그에 따라 방화벽 규칙을 제한할 수 있습니다. SQL Server 포트 및 방화벽에 대한 자세한 내용은 방화벽을 통해 SQL과 통신하는 데 필요한 TCP/IP 포트 번호방법: 특정 TCP 포트에서 수신 대기하도록 서버 구성(SQL Server 구성 관리자)을 참조하세요.

대부분의 Windows Server 환경에서는 데이터베이스 서버에서 Windows 방화벽을 구성해야 할 수 있습니다. 기본적으로 Windows 방화벽은 규칙이 특별히 금지하지 않는 한 모든 아웃바운드 트래픽을 허용합니다. 웹 서버가 데이터베이스에 연결할 수 있도록 하려면 SQL Server instance 사용하는 포트 번호에서 TCP 트래픽을 허용하는 인바운드 규칙을 구성해야 합니다. 기본 instance SQL Server 사용하는 경우 다음 절차를 사용하여 이 규칙을 구성할 수 있습니다.

기본 SQL Server instance 통신을 허용하도록 Windows 방화벽을 구성하려면

  1. 데이터베이스 서버의 시작 메뉴에서 관리 도구를 가리킨 다음 고급 보안이 있는 Windows 방화벽을 클릭합니다.

  2. 트리 뷰 창에서 인바운드 규칙을 클릭합니다.

    트리 뷰 창에서 인바운드 규칙을 클릭합니다.

  3. 작업 창의 인바운드 규칙에서 새 규칙을 클릭합니다.

  4. 새 인바운드 규칙 마법사의 규칙 유형 페이지에서 포트를 선택하고 다음을 클릭합니다.

    새 인바운드 규칙 마법사의 규칙 유형 페이지에서 포트를 선택하고 다음을 클릭합니다.

  5. 프로토콜 및 포트 페이지에서 TCP가 선택되어 있는지 확인하고 특정 로컬 포트 상자에 1433을 입력한 다음 다음을 클릭합니다.

    프로토콜 및 포트 페이지에서 TCP가 선택되어 있는지 확인하고 특정 로컬 포트 상자에 1433을 입력한 다음 다음을 클릭합니다.

  6. 작업 페이지에서 연결 허용을 선택한 상태로 두고 다음을 클릭합니다.

  7. 프로필 페이지에서 도메인을 선택한 상태로 두고 프라이빗공용 검사 상자를 선택 취소한 다음 다음을 클릭합니다.

    프로필 페이지에서 도메인을 선택한 상태로 두고 프라이빗 및 퍼블릭 검사 상자의 선택을 취소한 다음 다음을 클릭합니다.

  8. 이름 페이지에서 규칙에 적절한 설명이 포함된 이름(예: 기본 instance - 네트워크 액세스 SQL Server)을 지정한 다음 마침을 클릭합니다.

특히 비표준 또는 동적 포트를 통해 SQL Server 통신해야 하는 경우 SQL Server Windows 방화벽을 구성하는 방법에 대한 자세한 내용은 방법: 데이터베이스 엔진 액세스를 위한 Windows 방화벽 구성을 참조하세요.

로그인 및 데이터베이스 권한 구성

IIS(인터넷 정보 서비스)에 웹 애플리케이션을 배포하면 애플리케이션 풀의 ID를 사용하여 애플리케이션이 실행됩니다. 도메인 환경에서 애플리케이션 풀 ID는 네트워크 리소스에 액세스하기 위해 실행되는 서버의 컴퓨터 계정을 사용합니다. 컴퓨터 계정은 [도메인 이름]</strong>[컴퓨터 이름](예: FABRIKAM\TESTWEB1$) $형식을 사용합니다. 웹 애플리케이션이 네트워크를 통해 데이터베이스에 액세스할 수 있도록 하려면 다음을 수행해야 합니다.

  • 웹 서버 컴퓨터 계정에 대한 로그인을 SQL Server instance 추가합니다.
  • 컴퓨터 계정 로그인을 필요한 데이터베이스 역할(일반적으로 db_datareaderdb_datawriter)에 매핑합니다.

웹 애플리케이션이 단일 서버가 아닌 서버 팜에서 실행되는 경우 서버 팜의 모든 웹 서버에 대해 이러한 절차를 반복해야 합니다.

참고

애플리케이션 풀 ID 및 네트워크 리소스 액세스에 대한 자세한 내용은 애플리케이션 풀 ID를 참조하세요.

다양한 방법으로 이러한 작업에 접근할 수 있습니다. 로그인을 만들려면 다음 중 하나를 수행할 수 있습니다.

  • Transact-SQL 또는 SQL Server Management Studio 사용하여 데이터베이스 서버에서 수동으로 로그인을 만듭니다.
  • Visual Studio에서 SQL Server 2008 서버 프로젝트를 사용하여 로그인을 만들고 배포합니다.

SQL Server 로그인은 데이터베이스 수준 개체가 아닌 서버 수준 개체이므로 배포하려는 데이터베이스에 종속되지 않습니다. 따라서 언제든지 로그인을 만들 수 있으며, 가장 쉬운 방법은 데이터베이스 배포를 시작하기 전에 데이터베이스 서버에서 수동으로 로그인을 만드는 것입니다. 다음 절차를 사용하여 SQL Server Management Studio 로그인을 만들 수 있습니다.

웹 서버 컴퓨터 계정에 대한 SQL Server 로그인을 만들려면

  1. 데이터베이스 서버의 시작 메뉴에서 모든 프로그램을 가리키고 Microsoft SQL Server 2008 R2를 클릭한 다음 SQL Server Management Studio 클릭합니다.

  2. 서버에 연결 대화 상자의 서버 이름 상자에 데이터베이스 서버의 이름을 입력한 다음 연결을 클릭합니다.

    이 이미지는 서버에 연결 대화 상자의 서버 이름 상자에 데이터베이스 서버의 이름을 입력한 다음 연결을 클릭합니다.

  3. 개체 탐색기 창에서 보안을 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 로그인을 클릭합니다.

  4. 로그인 – 새 대화 상자의 로그인 이름 상자에 웹 서버 컴퓨터 계정의 이름(예: FABRIKAM\TESTWEB1$)을 입력합니다.

    로그인 – 새 대화 상자의 로그인 이름 상자에 웹 서버 컴퓨터 계정의 이름(예: FABRIKAM\TESTWEB1$)을 입력합니다.

  5. 확인을 클릭합니다.

이 시점에서 데이터베이스 서버는 웹 배포 게시를 수행할 준비가 된 것입니다. 그러나 컴퓨터 계정 로그인을 필요한 데이터베이스 역할에 매핑하기 전까지는 배포하는 모든 솔루션이 작동하지 않습니다. 데이터베이스 역할에 로그인을 매핑하려면 데이터베이스를 배포할 때까지 역할을 매핑할 수 없으므로 훨씬 더 많은 생각이 필요합니다. 컴퓨터 계정 로그인을 필요한 데이터베이스 역할에 매핑하려면 다음 중 하나를 수행할 수 있습니다.

  • 데이터베이스를 처음으로 배포한 후 수동으로 로그인에 데이터베이스 역할을 할당합니다.
  • 배포 후 스크립트를 사용하여 로그인에 데이터베이스 역할을 할당합니다.

로그인 및 데이터베이스 역할 매핑 만들기를 자동화하는 방법에 대한 자세한 내용은 테스트 환경에 데이터베이스 역할 멤버 자격 배포를 참조하세요. 또는 다음 절차를 사용하여 컴퓨터 계정 로그인을 필요한 데이터베이스 역할에 수동으로 매핑할 수 있습니다. 데이터베이스를 배포한 후에 는 이 절차를 수행할 수 없습니다.

데이터베이스 역할을 웹 서버 컴퓨터 계정 로그인에 매핑하려면

  1. 이전과 같이 SQL Server Management Studio 엽니다.

  2. 개체 탐색기 창에서 보안 노드를 확장하고 로그인 노드를 확장한 다음 컴퓨터 계정 로그인(예: FABRIKAM\TESTWEB1$)을 두 번 클릭합니다.

    개체 탐색기 창에서 보안 노드를 확장하고 로그인 노드를 확장한 다음 컴퓨터 계정 로그인(예: FABRIKAM\TESTWEB1$)을 두 번 클릭합니다.

  3. 로그인 속성 대화 상자에서 사용자 매핑을 클릭합니다.

  4. 이 로그인 테이블에 매핑된 사용자 테이블에서 데이터베이스 이름(예: ContactManager)을 선택합니다.

  5. 데이터베이스 역할 멤버 자격:[데이터베이스 이름] 목록에서 필요한 권한을 선택합니다. Contact Manager 샘플 솔루션의 경우 db_datareaderdb_datawriter 역할을 선택해야 합니다.

    데이터베이스 역할 멤버 자격: [데이터베이스 이름] 목록에서 필요한 권한을 선택합니다. Contact Manager 샘플 솔루션의 경우 db_datareader 및 db_datawriter 역할을 선택해야 합니다.

  6. 확인을 클릭합니다.

데이터베이스 역할을 수동으로 매핑하는 것이 테스트 환경에 적합한 경우가 많지만 자동화되거나 한 번 클릭으로 스테이징 또는 프로덕션 환경에 배포하는 것은 바람직하지 않습니다. 배포 후 스크립트를 사용하여 이러한 종류의 작업을 자동화하는 방법에 대한 자세한 내용은 테스트 환경에 데이터베이스 역할 멤버 자격을 배포에서 확인할 수 있습니다.

참고

서버 프로젝트 및 데이터베이스 프로젝트에 대한 자세한 내용은 Visual Studio 2010 SQL Server 데이터베이스 프로젝트를 참조하세요.

배포 계정에 대한 권한 구성

배포를 실행하는 데 사용할 계정이 SQL Server 관리자가 아닌 경우 이 계정에 대한 로그인도 만들어야 합니다. 데이터베이스를 만들려면 계정이 dbcreator 서버 역할의 멤버이거나 동등한 권한이 있어야 합니다.

참고

웹 배포 또는 VSDBCMD를 사용하여 데이터베이스를 배포하는 경우 Windows 자격 증명 또는 SQL Server 자격 증명을 사용할 수 있습니다(SQL Server instance 혼합 모드 인증을 지원하도록 구성된 경우). 다음 절차에서는 Windows 자격 증명을 사용하려고 하지만 배포를 구성할 때 연결 문자열에 SQL Server 사용자 이름 및 암호를 지정하는 것을 막을 수는 없습니다.

배포 계정에 대한 권한을 설정하려면

  1. 이전과 같이 SQL Server Management Studio 엽니다.

  2. 개체 탐색기 창에서 보안을 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 로그인을 클릭합니다.

  3. 로그인 – 새 대화 상자의 로그인 이름 상자에 배포 계정의 이름(예: FABRIKAM\matt)을 입력합니다.

  4. 페이지 선택 창에서 서버 역할을 클릭합니다.

  5. dbcreator를 선택한 다음 확인을 클릭합니다.

    dbcreator를 선택한 다음 확인을 클릭합니다.

후속 배포를 지원하려면 첫 번째 배포 후 데이터베이스의 db_owner 역할에 배포 계정을 추가해야 합니다. 이후 배포 시 새 데이터베이스를 만드는 대신 기존 데이터베이스의 스키마를 수정하기 때문입니다. 이전 섹션에서 설명한 대로 명백한 이유로 데이터베이스를 만들 때까지 데이터베이스 역할에 사용자를 추가할 수 없습니다.

배포 계정 로그인을 db_owner 데이터베이스 역할에 매핑하려면

  1. 이전과 같이 SQL Server Management Studio 엽니다.

  2. 개체 탐색기 창에서 보안 노드를 확장하고 로그인 노드를 확장한 다음 컴퓨터 계정 로그인(예: FABRIKAM\matt)을 두 번 클릭합니다.

  3. 로그인 속성 대화 상자에서 사용자 매핑을 클릭합니다.

  4. 이 로그인 테이블에 매핑된 사용자 테이블에서 데이터베이스 이름(예: ContactManager)을 선택합니다.

  5. 데이터베이스 역할 멤버 자격:[데이터베이스 이름] 목록에서 db_owner 역할을 선택합니다.

    데이터베이스 역할 멤버 자격: [데이터베이스 이름] 목록에서 db_owner 역할을 선택합니다.

  6. 확인을 클릭합니다.

결론

이제 데이터베이스 서버가 원격 데이터베이스 배포를 수락하고 원격 IIS 웹 서버가 데이터베이스에 액세스할 수 있도록 할 준비가 되었습니다. 데이터베이스를 배포하고 사용하기 전에 다음 핵심 사항을 검사 수 있습니다.

  • 원격 TCP/IP 연결을 허용하도록 SQL Server 구성했나요?
  • SQL Server 트래픽을 허용하도록 방화벽을 구성했나요?
  • SQL Server 액세스할 모든 웹 서버에 대한 컴퓨터 계정 로그인을 만들었나요?
  • 데이터베이스 배포에 사용자 역할 매핑을 만드는 스크립트가 포함되어 있나요, 아니면 데이터베이스를 처음으로 배포한 후 수동으로 만들어야 합니까?
  • 배포 계정에 대한 로그인을 만들고 dbcreator 서버 역할에 추가했나요?

추가 정보

데이터베이스 프로젝트 배포에 대한 지침은 데이터베이스 프로젝트 배포를 참조하세요. 배포 후 스크립트를 실행하여 데이터베이스 역할 멤버 자격을 만드는 방법에 대한 지침은 테스트 환경에 데이터베이스 역할 멤버 자격 배포를 참조하세요. 멤버 자격 데이터베이스가 제기하는 고유한 배포 문제를 해결하는 방법에 대한 지침은 엔터프라이즈 환경에 멤버 자격 데이터베이스 배포를 참조하세요.