Invoke-Sqlcmd
SQL Server SQLCMD 유틸리티에서 지원하는 문이 포함된 스크립트를 실행합니다.
Syntax
Invoke-Sqlcmd
[-ServerInstance <PSObject>]
[-Database <String>]
[-EncryptConnection]
[-Username <String>]
[-Password <String>]
[[-Query] <String>]
[-QueryTimeout <Int32>]
[-ConnectionTimeout <Int32>]
[-ErrorLevel <Int32>]
[-SeverityLevel <Int32>]
[-MaxCharLength <Int32>]
[-MaxBinaryLength <Int32>]
[-AbortOnError]
[-DedicatedAdministratorConnection]
[-DisableVariables]
[-DisableCommands]
[-HostName <String>]
[-NewPassword <String>]
[-Variable <String[]>]
[-InputFile <String>]
[-OutputSqlErrors <Boolean>]
[-IncludeSqlUserErrors]
[-SuppressProviderContextWarning]
[-IgnoreProviderContext]
[<CommonParameters>]
Description
Invoke-Sqlcmd cmdlet은 SQL Server SQLCMD 유틸리티에서 지원하는 언어 및 명령을 포함하는 스크립트를 실행합니다.
지원되는 명령은 Transact-SQL 문과 데이터베이스 엔진에서 지원하는 XQuery 구문의 하위 집합입니다.
또한 이 cmdlet은 GO 및 QUIT과 같은 SQLCMD에서 기본적으로 지원되는 많은 명령을 허용합니다.
이 cmdlet은 SQLCMDUSER와 같은 SQLCMD 스크립팅 변수도 허용합니다.
기본적으로 이 cmdlet은 SQLCMD 스크립팅 변수를 설정하지 않습니다.
이 cmdlet은 주로 대화형 스크립트 편집과 관련된 명령 사용을 지원하지 않습니다.
지원되지 않는 명령으로는 :!!, :connect, :error, :out, :ed, :list, :listvar, :reset, :perftrace 및 :serverlist가 있습니다.
이 cmdlet을 실행하면 스크립트가 반환하는 첫 번째 결과 집합이 형식이 지정된 테이블로 표시됩니다.
후속 결과 집합에 첫 번째 목록과 다른 열 목록이 포함되어 있으면 해당 결과 집합이 표시되지 않습니다.
첫 번째 집합 이후의 후속 결과 집합에 동일한 열 목록이 있는 경우 해당 행은 첫 번째 결과 집합에서 반환된 행을 포함하는 형식이 지정된 테이블에 추가됩니다.
Verbose 매개 변수를 지정하여 SQL PRINT 문의 결과와 같은 SQL Server 메시지 출력을 표시할 수 있습니다.
예제
예제 1: 명명된 instance 연결하고 스크립트 실행
PS C:\> Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MainInstance"
TimeOfQuery
-----------
5/13/2010 8:49:43 PM
이 명령은 컴퓨터에서 SQL Database 엔진의 명명된 instance 연결하고 기본 Transact-SQL 스크립트를 실행합니다.
예제 2: 스크립트 파일에서 명령을 호출하고 출력을 텍스트 파일에 저장
PS C:\> Invoke-Sqlcmd -InputFile "C:\ScriptFolder\TestSqlCmd.sql" | Out-File -FilePath "C:\ScriptFolder\TestSqlCmd.rpt"
Output sent to TestSqlCmd.rpt.
이 명령은 Transact-SQL 문 및 SQLCMD 명령이 포함된 파일을 읽고, 파일을 실행하고, 출력을 다른 파일에 씁니다.
출력 파일에는 독점 정보가 포함될 수 있으므로 적절한 NTFS 권한으로 출력 파일을 보호해야 합니다.
예제 3: 스크립트 호출 및 문자열의 변수 값 전달
PS C:\> $StringArray = "MYVAR1='String1'", "MYVAR2='String2'"
PS C:\> Invoke-Sqlcmd -Query "SELECT `$(MYVAR1) AS Var1, `$(MYVAR2) AS Var2;" -Variable $StringArray
Var1 Var2
---- ----
String1 String2
이 명령은 변수 매개 변수 에 대한 입력으로 문자열 배열을 사용합니다.
배열은 여러 SQLCMD 변수를 정의합니다.
SQLCMD 변수를 식별하는 SELECT 문의 $ 기호는 백틱(') 문자를 사용하여 이스케이프됩니다.
예제 4: 스크립트 호출 및 SQL 데이터베이스 엔진에서 변수 전달
PS C:\>Set-Location "SQLSERVER:\SQL\MyComputer\MainInstance"
PS C:\>Invoke-Sqlcmd -Query "SELECT SERVERPROPERTY('MachineName') AS ComputerName;" -ServerInstance (Get-Item .)
ComputerName
------------
MyComputer
이 명령은 Set-Location 을 사용하여 SQL Database 엔진의 instance 대한 SQL Server Windows PowerShell 공급자 경로로 이동합니다.
그런 다음 Get-Item 을 호출하여 Invoke-Sqlcmd 의 ServerInstance 매개 변수로 사용할 SQL Management 개체 서버 개체를 검색합니다.
예제 5: 쿼리 실행 및 자세한 정보 표시 출력
PS C:\> Invoke-Sqlcmd -Query "PRINT N'abc'" -Verbose
VERBOSE: abc
이 명령은 Windows PowerShell Verbose 매개 변수를 사용하여 SQL PRINT 명령의 메시지 출력을 반환합니다.
예제 6: 위치 문자열을 입력으로 사용하여 명령 호출
PS C:\> Invoke-Sqlcmd "SELECT DB_NAME() AS DatabaseName;"
WARNING: Using provider context. Server = MyComputer, Database = AdventureWorks2014.
DatabaseName
------------
AdventureWorks2014
이 명령은 위치 문자열을 사용하여 쿼리 매개 변수에 입력을 제공합니다.
또한 Invoke-Sqlcmd 가 현재 경로를 사용하여 데이터베이스 컨텍스트를 AdventureWorks2014로 설정하는 방법을 보여 줍니다.
매개 변수
-AbortOnError
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-ConnectionTimeout
Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-Database
Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-DedicatedAdministratorConnection
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-DisableCommands
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-DisableVariables
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-EncryptConnection
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-ErrorLevel
Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-HostName
Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-IgnoreProviderContext
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-IncludeSqlUserErrors
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-MaxBinaryLength
Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-MaxCharLength
Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-NewPassword
Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-OutputSqlErrors
Type: Boolean
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-Password
Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-Query
Type: String
Position: 1
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-QueryTimeout
Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-ServerInstance
Type: PSObject
Position: Named
Default value: None
Required: False
Accept pipeline input: True
Accept wildcard characters: False
-SeverityLevel
Type: Int32
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-SuppressProviderContextWarning
Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-Username
Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
-Variable
Type: String [ ]
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False
PSObject
출력
서식이 지정된 테이블