다음을 통해 공유


SQL Server PowerShell 경로 작업

데이터베이스 엔진 공급자 경로의 노드로 이동한 후에는 노드와 연결된 데이터베이스 엔진 관리 개체의 메서드 및 속성을 사용하여 작업을 수행하거나 정보를 검색할 수 있습니다.

비고

두 개의 SQL Server PowerShell 모듈이 있습니다. SqlServerSQLPS.

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

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

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

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

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

데이터베이스 엔진 공급자 경로의 노드로 이동한 후 다음 두 가지 유형의 작업을 수행할 수 있습니다.

  • Rename-Item과 같은 노드에서 작동하는 Windows PowerShell cmdlet을 실행할 수 있습니다.

  • SMO와 같은 관련 SQL Server 관리 개체 모델에서 메서드를 호출할 수 있습니다. 예를 들어 경로에서 데이터베이스 노드로 이동하는 경우 <xref:Microsoft.SqlServer.Management.Smo.Database> 클래스의 메서드와 속성을 사용할 수 있습니다.

SQL Server 공급자는 데이터베이스 엔진 인스턴스의 개체를 관리하는 데 사용됩니다. 데이터베이스의 데이터 작업에는 사용되지 않습니다. 테이블 또는 뷰로 이동한 경우에는 공급자를 사용하여 데이터에 대한 선택, 삽입, 업데이트 또는 삭제 작업을 수행할 수 없습니다. Windows PowerShell 환경에서 테이블 및 뷰의 데이터를 쿼리하거나 변경하려면 Invoke-Sqlcmd cmdlet을 사용하세요. 자세한 내용은 Invoke-Sqlcmd를 참조하세요.

목록 메소드 및 속성

메서드 및 속성 나열

특정 개체 또는 개체 클래스에 사용할 수 있는 메서드와 속성을 보려면 Get-Member cmdlet을 사용합니다.

예: 메서드 및 속성 나열

다음은 Windows PowerShell 변수를 SMO <xref:Microsoft.SqlServer.Management.Smo.Database> 클래스로 설정하고 메서드 및 속성을 나열하는 예제입니다.

$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database
$MyDBVar | Get-Member -Type Methods
$MyDBVar | Get-Member -Type Properties

Get-Member를 사용하여 Windows PowerShell 경로의 끝 노드와 연결된 메서드 및 속성을 나열할 수도 있습니다.

이 예에서는 SQLSERVER: 경로의 Databases 노드로 이동하고 컬렉션 속성을 나열합니다.

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
Get-Item . | Get-Member -Type Properties

이 예제에서는 SQLSERVER의 AdventureWorks2022 노드로 이동합니다. 경로 및 개체 속성을 나열합니다.

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022
Get-Item . | Get-Member -Type Properties

메서드 및 속성 사용

SMO 메서드 및 속성 사용

데이터베이스 엔진 공급자 경로에서 개체에 대한 작업을 수행하려면 SMO 메서드 및 속성을 사용할 수 있습니다.

예: 메서드 및 속성 사용

이 예제에서는 SMO 스키마 속성을 사용하여 다음의 Sales 스키마 AdventureWorks2022에서 테이블 목록을 가져옵니다.

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022\Tables
Get-ChildItem | where {$_.Schema -eq "Sales"}

이 예제에서는 SMO 스크립트 메서드를 사용하여 다음에서 AdventureWorks2022뷰를 다시 만들어야 하는 CREATE VIEW 문이 포함된 스크립트를 생성합니다.

Remove-Item C:\PowerShell\CreateViews.sql
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022\Views
foreach ($Item in Get-ChildItem) { $Item.Script() | Out-File -Filepath C:\PowerShell\CreateViews.sql -append }

이 예제에서는 SMO Create 메서드를 사용하여 데이터베이스를 만든 다음 State 속성을 사용하여 데이터베이스가 있는지 여부를 표시합니다.

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases
$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database
$MyDBVar.Parent = (Get-Item ..)
$MyDBVar.Name = "NewDB"
$MyDBVar.Create()
$MyDBVar.State