서버 네트워크 프로토콜 설정 또는 해제
적용 대상: SQL Server - Windows만 해당
모든 네트워크 프로토콜은 SQL Server 설치 프로그램에서 설치하는 동안 설치되지만 사용하거나 사용하지 않을 수 있습니다. 이 문서에서는 SQL Server에서 SQL Server 구성 관리자 또는 PowerShell을 사용하여 서버 네트워크 프로토콜을 설정하거나 해제하는 방법에 대해 설명합니다. 변경 내용이 적용되려면 데이터베이스 엔진 중지하고 다시 시작해야 합니다.
설명
SQL Server Express 버전을 설정하는 동안 BUILTIN\Users 그룹에 대한 로그인이 추가됩니다. 이 로그인을 사용하면 컴퓨터의 모든 인증된 사용자가 공용 역할의 멤버로 SQL Server Express 인스턴스에 액세스할 수 있습니다. 개별 로그인이 있거나 로그인이 있는 다른 Windows 그룹의 구성원인 컴퓨터 사용자에 대한 데이터베이스 엔진 액세스를 제한하기 위해 BUILTIN\Users 로그인을 안전하게 제거할 수 있습니다.
SQL Server 및 SQL Server 2014(12.x)까지의 SQL Server에 대한 Microsoft 데이터 공급자는 기본적으로 TLS 1.0 및 SSL 3.0만 지원합니다. 운영 체제 SChannel 계층을 변경하여 다른 프로토콜(예: TLS 1.1 또는 TLS 1.2)을 적용하는 경우 TLS 1.1 및 1.2에 대한 지원을 SQL Server에 추가하기 위해 적절한 업데이트를 설치하지 않으면 SQL Server에 대한 연결이 실패할 수 있습니다. . 자세한 내용은 KB 3135244를 참조하세요. SQL Server 2016 (13.x)부터 SQL Server의 모든 릴리스 버전은 추가 업데이트가 필요 없는 TLS 1.2 지원을 포함합니다.
SQL Server 구성 관리자 사용
SQL Server 구성 관리자의 콘솔 창에서 SQL Server 네트워크 구성을 확장합니다.
콘솔 창에서 <인스턴스 이름>에 대한 프로토콜을 클릭합니다.
세부 정보 창에서 변경하려는 프로토콜을 마우스 오른쪽 버튼으로 클릭한 다음 사용함 또는 사용 안 함을 선택합니다.
콘솔 창에서 SQL Server 서비스를 선택합니다.
세부 정보 창에서 SQL Server(<인스턴스 이름>)을 마우스 오른쪽 단추로 클릭한 후 다시 시작을 선택하여 SQL Server 서비스를 중지한 다음 다시 시작합니다.
참고 항목
SQL Server Express 버전을 포함하여 명명된 SQL Server 인스턴스가 있는 경우 SQL Server 브라우저 서비스도 다시 시작해야 합니다.
SQL Server PowerShell 사용
PowerShell을 사용하여 서버 네트워크 프로토콜 사용
관리자 권한을 사용하여 명령 프롬프트를 엽니다.
작업 표시줄이나 시작 메뉴에서 Windows PowerShell을 시작합니다.
Import-Module SqlServer
를 입력하여 SqlServer 모듈을 가져옵니다.TCP 및 명명된 파이프 프로토콜을 모두 사용하도록 설정하려면 다음 문을 실행합니다.
<computer_name>
을 SQL Server를 실행하는 컴퓨터의 이름으로 바꿉니다. 명명된 인스턴스(SQL Server Express 버전 포함)를 구성하는 경우MSSQLSERVER
을 인스턴스 이름으로 바꿉니다.프로토콜을 해제하려면
IsEnabled
속성을$false
로 설정합니다.SQL Server 설치 여부와 상관없이 모든 컴퓨터에서 이 스크립트를 실행할 수 있습니다. SqlServer 모듈이 설치되어 있는지 확인합니다.
#requires the SqlServer module Import-Module SQLServer $wmi = New-Object Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer <#computer_name#> # List the object properties, including the instance names. $Wmi # Enable the TCP protocol on the default instance. $uri = "ManagedComputer[@Name='<#computer_name#>']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']" $Tcp = $wmi.GetSmoObject($uri) $Tcp.IsEnabled = $true $Tcp.Alter() $Tcp # Enable the named pipes protocol for the default instance. $uri = "ManagedComputer[@Name='<#computer_name#>']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']" $Np = $wmi.GetSmoObject($uri) $Np.IsEnabled = $true $Np.Alter() $Np
로컬 컴퓨터에 대한 프로토콜 구성
스크립트가 로컬로 실행되고 로컬 컴퓨터를 구성하는 경우 SQL Server PowerShell은 로컬 컴퓨터 이름을 동적으로 확인하여 스크립트를 보다 유연하게 만들 수 있습니다. 로컬 컴퓨터 이름을 가져오려면 $uri
변수 설정 행을 다음 행으로 바꿉니다.
$uri = "ManagedComputer[@Name='" + (get-item env:\computername).Value + "']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"
SQL Server PowerShell을 사용하여 데이터베이스 엔진 다시 시작
프로토콜을 사용하거나 사용하지 않도록 설정한 후에는 변경 내용이 적용되려면 데이터베이스 엔진 중지하고 다시 시작해야 합니다. SQL Server PowerShell을 사용하여 다음 문을 실행함으로써 기본 인스턴스를 중지한 후 다시 시작합니다. 명명된 인스턴스를 중지한 후 다시 시작하려면 'MSSQLSERVER'
를 'MSSQL$<instance_name>'
으로 바꿉니다.
# Get a reference to the ManagedComputer class.
CD SQLSERVER:\SQL\<computer_name>
$Wmi = (get-item .).ManagedComputer
# Get a reference to the default instance of the Database Engine.
$DfltInstance = $Wmi.Services['MSSQLSERVER']
# Display the state of the service.
$DfltInstance
# Stop the service.
$DfltInstance.Stop();
# Wait until the service has time to stop.
# Refresh the cache.
$DfltInstance.Refresh();
# Display the state of the service.
$DfltInstance
# Start the service again.
$DfltInstance.Start();
# Wait until the service has time to start.
# Refresh the cache and display the state of the service.
$DfltInstance.Refresh();
$DfltInstance
참고 항목
SQL Server Express 버전을 포함하여 명명된 SQL Server 인스턴스가 있는 경우 SQL Server 브라우저 서비스도 다시 시작해야 합니다.