SQL Server cmdlet 사용

Windows PowerShell cmdlet은 일반적으로 Get-Help 또는 Set-MachineName과 같이 동사-명사 명명 규칙이 적용되는 단일 함수 명령입니다. Windows PowerShell의 SQL Server 공급자는 SQL Server 관련 cmdlet을 제공합니다.

SQL Server cmdlet

SQL Server 2008은 적은 수의 SQL Server cmdlet을 구현합니다.

Windows PowerShell 환경에서 Get-Help cmdlet은 각 cmdlet에 대한 도움말 정보를 제공합니다. Get-Help는 구문, 매개 변수 정의, 입력 및 출력 유형, cmdlet에서 수행하는 동작에 대한 설명과 같은 정보를 반환합니다.

이 예에서는 SQL ServerEncode-SqlName cmdlet에 대한 기본 도움말, 전체 도움말, 구문 다이어그램, 매개 변수 및 예를 반환합니다.

get-help "Encode-SqlName"
get-help "Encode-SqlName" -Full
get-help "Encode-SqlName" -Syntax
get-help "Encode-SqlName" -Parameter *
get-help "Encode-SqlName" -Examples

Invoke-Sqlcmd

Invoke-Sqlcmd는 Transact-SQL 또는 XQuery 문을 포함하는 sqlcmd 스크립트나 명령을 실행하도록 지원합니다. 또한 sqlcmd 입력을 문자열 입력 매개 변수 또는 열려는 스크립트 파일의 이름 중 하나로 사용합니다. 자세한 내용은 Invoke-Sqlcmd cmdlet 사용을 참조하십시오.

Invoke-PolicyEvaluation

Invoke-PolicyEvaluation은 SQL Server 개체의 대상 집합이 정책 기반 관리 정책에 정의된 조건을 준수하는지 여부를 보고합니다. 필요에 따라 cmdlet을 사용하여 정책 조건을 준수하지 않는 대상 개체의 설정할 수 있는 옵션을 다시 구성할 수 있습니다. 자세한 내용은 Invoke-PolicyEvaluation cmdlet 사용을 참조하십시오.

인코딩 및 디코딩 SQL Server 식별자

식별자는 SQL Server 개체의 이름입니다. SQL Server 식별자는 Windows PowerShell 언어보다 광범위한 문자를 지원합니다. 데이터베이스 엔진의 대괄호로 묶은 식별자 또는 따옴표 붙은 식별자의 이름에 사용되는 문자에는 거의 제한이 없습니다. 대괄호로 묶은 식별자 또는 따옴표 붙은 식별자에 사용된 일부 문자는 Windows PowerShell ` 이스케이프 문자를 사용하여 이스케이프 처리할 수 없고 SQL Server 공급자를 사용할 경우 문제가 발생할 수 있습니다.

Encode-SqlName cmdlet은 SQL Server 식별자를 입력으로 사용하고 Windows PowerShell 언어에서 지원되지 않는 모든 문자의 형식을 Windows PowerShell에서 사용되는 표현으로 다시 지정합니다. Decode-SqlName cmdlet은 인코딩된 SQL Server 식별자를 입력으로 사용하고 원래 식별자를 반환합니다. 예를 들면 다음과 같습니다.

  • Encode-SqlName "Table:Test"는 "Table%3ATest" 문자열을 반환합니다.

  • Decode-SqlName "Table%3ATest"는 "Table:Test"를 반환합니다.

자세한 내용은 PowerShell에서 SQL Server 식별자 사용을 참조하십시오.

URN을 경로로 변환

SMO(SQL Server Management Object) 모델은 개체의 URN(Uniform Resource Names)을 작성합니다. 각 URN에는 개체에 대한 경로와 동일한 정보가 다른 형식으로 존재합니다. 예를 들어 테이블에 대한 경로는 다음과 같습니다.

SQLSERVER:\SQL\MyComputer\DEFAULT\Databases\AdventureWorks2008R2\Tables\Person.Address

동일한 개체에 대한 URN은 다음과 같습니다.

Server[@Name='MyComputer']\Database[@Name='AdventureWorks2008R2']\Table[@Name='Address' and @Schema='Person']

Convert-UrnToPath cmdlet은 SMO URN 문자열을 Windows PowerShell 경로로 변환합니다. 노드 이름에 Windows PowerShell 경로 이름에서 지원되지 않는 확장 문자가 포함된 경우 Convert-UrnToPath는 이러한 문자를 해당 16진수 표현으로 인코딩합니다. 예를 들어 "My:Table"은 "My%3ATable"로 반환됩니다.

Windows PowerShell에서 Get-Help Convert-UrnToPath -Examples를 실행하여 cmdlet 사용 예를 볼 수 있습니다.

부분 매개 변수 이름

cmdlet 매개 변수의 전체 이름을 지정할 필요는 없습니다. cmdlet에서 지원하는 다른 매개 변수와 고유하게 구분될 수 있도록 이름을 지정하기만 하면 됩니다. 예를 들어 이 예에서는 Invoke-Sqlcmd -QueryTimeout 매개 변수를 지정하는 3가지 방법을 보여 줍니다.

Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTime 3
Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryT 3