使用 SQL ServerPowerShell 路径

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

在您导航到 数据库引擎 提供程序路径中的某一节点后,可通过使用与该节点相关联的 数据库引擎 管理对象中的方法和属性,执行工作或检索信息。

注意

SQL Server PowerShell 模块有两种;SqlServer 和 SQLPS 。

SqlServer 模块是当前要使用的 PowerShell 模块。

虽然 SQL Server 安装附带了 SQLPS 模块(用于实现后向兼容性),但该模块不再更新。

SqlServer 模块不仅包含 SQLPS 更新版本的 cmdlet,还包含新的 cmdlet 以支持最新的 SQL 功能 。

PowerShell 库安装 SqlServer 模块。

有关详细信息,请参阅 SQL Server PowerShell

在导航到 数据库引擎 提供程序路径中的节点之后,可以执行两种类型的操作:

  • 可以运行作用于节点的 Windows PowerShell cmdlet,如 Rename-Item

  • 可以调用相关联的 SQL Server 管理对象模型中的方法,如 SMO。 例如,如果你导航到路径中的 Databases 节点,则可以使用 Database 类的方法和属性。

SQL Server 提供程序用于管理 数据库引擎实例中的对象, 而不能用于处理数据库中的数据。 如果您已经导航到表或视图,则不能使用该提供程序选择、插入、更新或删除数据。 可以使用 Invoke-Sqlcmd cmdlet 来查询或更改 Windows PowerShell 环境内表和视图中的数据。 有关详细信息,请参阅 Invoke-Sqlcmd cmdlet

列出方法和属性

列出方法和属性

若要查看可供特定对象或对象类使用的方法和属性,请使用 Get-Member cmdlet。

示例:列出方法和属性

下面的示例将 Windows PowerShell 变量设置为 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“Schema”属性,从 AdventureWorks2022 中的 Sales 架构中获取表的列表:

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

此示例使用 SMO“Script”方法生成一个包含“CREATE VIEW”语句的脚本,你必须使用该脚本在 AdventureWorks2022 中重新创建视图:

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  

另请参阅