PowerShell에서 SQL Server에 대한 인증 관리

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

기본적으로 SQL Server PowerShell 구성 요소는 Windows 인증을 사용하여 데이터베이스 엔진 인스턴스에 연결합니다. PowerShell 가상 드라이브를 정의하거나 Invoke-Sqlcmd에 대한 -Username-Password매개 변수를 지정하여 SQL Server 인증을 사용할 수 있습니다.

참고 항목

SQL Server PowerShell 모듈에는 SqlServerSQLPS의 두 가지가 있습니다.

SqlServer 모듈이 사용할 현재 PowerShell 모듈입니다.

SQLPS 모듈은 (이전 버전과의 호환성을 위해) SQL Server 설치에 포함되어 있지만 더 이상 업데이트되지 않습니다.

SqlServer 모듈은 SQLPS에 업데이트된 버전의 cmdlet이 포함되어 있으며, 최신 SQL 기능을 지원하는 새로운 cmdlet이 포함되어 있습니다.

PowerShell 갤러리에서 SqlServer 모듈을 설치합니다.

자세한 내용은 SQL Server PowerShell을 참조하세요.

사용 권한

데이터베이스 엔진의 인스턴스에서 수행할 수 있는 모든 동작은 인스턴스에 연결하는 데 사용되는 인증 자격 증명에 부여된 사용 권한에 의해 제어됩니다. 기본적으로 SQL Server 공급자 및 cmdlet은 데이터베이스 엔진에 대한 Windows 인증 연결을 만들기 위해 실행하는 Windows 계정을 사용합니다.

SQL Server 인증 연결을 만들려면 SQL Server 인증 로그인 ID 및 암호를 제공해야 합니다. SQL Server 공급자를 사용하는 경우 SQL Server 로그인 자격 증명을 가상 드라이브에 연결한 다음 디렉터리 변경 명령(cd)을 사용하여 해당 드라이브에 연결해야 합니다. Windows PowerShell에서 보안 자격 증명은 가상 드라이브에만 연결할 수 있습니다.

가상 드라이브를 통한 SQL Server 인증

SQL Server 인증 로그인과 연관된 가상 드라이브를 만들려면

  1. 다음과 같은 함수 앱을 만듭니다.

    1. 가상 드라이브에 제공할 이름, 로그인 ID 및 가상 드라이브에 연결할 공급자 경로에 대한 매개 변수를 포함하는 함수

    2. read-host를 사용하여 사용자에게 암호를 묻는 함수

    3. new-object를 사용하여 자격 증명 개체를 만드는 함수

    4. new-psdrive 를 사용하여 제공된 자격 증명으로 가상 드라이브를 만드는 함수

  2. 기능을 호출하여 제공된 자격 증명으로 가상 드라이브를 만드는 함수

예제(가상 드라이브)

이 예에서는 지정된 SQL Server 인증 로그인 및 인스턴스에 연결된 가상 드라이브를 만드는 데 사용할 수 있는 sqldrive라는 함수를 만듭니다.

sqldrive 함수는 로그인 비밀번호를 입력할 때 비밀번호를 마스킹하여 입력하라는 메시지를 표시합니다. 이렇게 하면 가상 드라이브 이름을 사용하여 경로에 연결하기 위해 디렉터리 변경 명령(cd)을 사용할 때마다 드라이브를 만들었을 때 제공한 SQL Server 인증 로그인 자격 증명을 사용하여 모든 작업이 수행됩니다.

## Create a function that specifies the login and prompts for the password.  
  
function sqldrive  
{  
    param( [string]$name, [string]$login = "MyLogin", [string]$root = "SQLSERVER:\SQL\MyComputer\MyInstance" )  
    $pwd = read-host -AsSecureString -Prompt "Password"  
    $cred = new-object System.Management.Automation.PSCredential -argumentlist $login,$pwd  
    New-PSDrive $name -PSProvider SqlServer -Root $root -Credential $cred -Scope 1  
}  
  
## Use the sqldrive function to create a SQLAuth virtual drive.  
sqldrive SQLAuth
  
## Set-Location to the virtual drive, which invokes the supplied authentication credentials.  
sl SQLAuth:

Invoke-Sqlcmd를 사용한 SQL Server 인증

Invoke-Sqlcmd를 사용하여 SQL Server를 인증하려면

  1. -Username 매개 변수를 사용하여 로그인 ID를 지정하고 -Password 매개 변수를 사용하여 연결된 암호를 지정합니다.

예제(Invoke-Sqlcmd)

이 예제에서는 read-host cmdlet을 사용하여 사용자에게 비밀번호를 묻는 메시지를 표시한 다음 SQL Server 인증을 사용하여 연결합니다.

## Prompt the user for their password.  
$pwd = read-host -AsSecureString -Prompt "Password"  
  
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance" -Username "MyLogin" -Password $pwd  

참고 항목