sql powershell 2016年7月份一些更新

 

过去,SQL Server的PowerShell组件包含在SSMS(工具)安装程序和SQL Server引擎安装程序中。为了能够发布SQL PowerShell更新,我们必须更改SQL PowerShell模块的标识以及名为SQLPS.exe的包装器。此更改对执行Import-Module的脚本有影响。

下面是引入的CMDLETs 针对如下领域:

  • Always Encrypted
  • SQL Agent
  • SQL Error Logs

此外,我们还对Invoke-SqlCmd和SQL提供程序做了一些很好的改进

新的 SQL PowerShell 组件

SSMS附带的SQL PowerShell模块已经从SQLPS更改为SqlServer (SQL Agent使用的模块没有更改)。这意味着,如果你有一个执行Import-Module SQLPS的PowerShell脚本,它将需要被更改为Import-Module SqlServer,以便利用新的提供者功能和新的cmdlet。新模块将被安装到%Program Files\WindowsPowerShell\Modules\SqlServer,因此不需要更新$env:PSModulePath。另外,如果您的脚本使用了第三方或社区版本的名为SqlServer的模块,您应该添加Prefix参数以避免名称冲突。

SSMS中包含的新版本的SQL Server PowerShell没有更新SQL Server使用的PowerShell版本。这意味着由SQL Agent执行的脚本将不能使用新的cmdlet。对SQLPS (SQL Agent使用的版本)的更新将通过传统的SQL Server更新机制完成;更具体地说,主要的变化将作为下一个主要版本SQL Server可用的一部分进行。

新的CMDLETs

cmdlet都在PowerShell中提供帮助以获得详细信息。与SSMS中的大多数特性一样,SQL PowerShell cmdlet可以在所有受支持的SQL Server版本上工作。在某些情况下,例如Always Encrypted, cmdlet显然只适用于支持特定特性集的SQL Server版本。

CMDLET Description
Add-SqlAzureAuthenticationContext 对Azure执行身份验证,并获得身份验证令牌。
Add-SqlColumnEncryptionKeyValue 为数据库中现有的列加密密钥对象添加新的加密值
Complete-SqlColumnMasterKeyRotation 完成列主键的旋转
Get-SqlColumnEncryptionKey 返回数据库中定义的列主键对象,或返回具有指定名称的一个列主键对象。
Get-SqlColumnMasterKey 回数据库中定义的列主键对象,或返回具有指定名称的一个列主键对象。
Invoke-SqlColumnMasterKeyRotation 启动列主键的旋转。
New-SqlAzureKeyVaultColumnMasterKeySettings 创建一个SqlColumnMasterKeySettings对象,用于描述存储在Azure密钥库中的非对称密钥。
New-SqlCertificateStoreColumnMasterKeySettings 创建引用指定证书的SqlColumnMasterKeySettings对象
New-SqlCngColumnMasterKeySettings 创建一个SqlColumnMasterKeySettings对象,该对象描述存储在支持加密下一代(CNG) API的密钥库中的非对称密钥。
New-SqlColumnEncryptionKey 数据库中创建一个新的列加密密钥对象。
New-SqlColumnEncryptionKeyEncryptedValue 生成列加密密钥的加密值。
New-SqlColumnEncryptionSettings 创建一个新的SqlColumnEncryptionSettings对象,该对象封装关于单个列的加密的信息,包括CEK和加密类型。
New-SqlColumnMasterKey 在数据库中创建一个新的列主键对象
New-SqlCspColumnMasterKeySettings 创建一个SqlColumnMasterKeySettings对象,该对象描述存储在密钥存储库中的非对称密钥,该密钥存储库具有支持加密API (CAPI)的加密服务提供程序(Cryptography Service Provider, CSP)。
Remove-SqlColumnEncryptionKey 从数据库中删除列加密密钥对象
Remove-SqlColumnEncryptionKeyValue 从数据库中现有的列加密密钥对象中移除加密值。
Remove-SqlColumnMasterKey 从数据库中删除列主键对象。
Set-SqlColumnEncryption 对数据库中的指定列进行加密、解密或重新加密。
   
Get-SqlAgent 返回一个SQL Agent (JobServer)对象,该对象存在于SQL Server的目标实例中。
Get-SqlAgentJob 为SQL代理的目标实例中出现的每个作业返回一个SQL代理作业对象。
Get-SqlAgentJobHistory 返回SQL Agent的目标实例中的JobHistory。
Get-SqlAgentJobSchedule 为SQL代理作业的目标实例中出现的每个调度返回一个JobSchedule对象。
Get-SqlAgentJobStep 为SQL代理作业的目标实例中出现的每个步骤返回一个SQL JobStep对象。
Get-SqlAgentSchedule 为SQL Agent的目标实例中出现的每个调度返回一个SQL JobSchedule对象。
   
Get-SqlErrorLog 检索SQL Server日志
Set-SqlErrorLog 在回收错误日志文件之前,设置或重置错误日志文件的最大数目。

Invoke-SqlCmd 改善

Ininvoke - sqlcmd现在支持OutputAs参数(或其别名-As)。该参数允许您指定DataRows、DataTables或DataSet作为返回的对象类型。这些类型映射到你在System.Data中找到的。net类型。DataRows是默认的,它对应于旧的行为。

 

此外,我们添加了ConnectionString参数,它允许脚本作者完全控制连接上下文。这开启了新的功能,比如使用Azure活动目录身份验证连接到SQL Azure。

SQL PowerShell provider 增强

SQL PowerShell提供程序现在正确地支持WhatIf和Confirm参数。这允许您查看脚本操作的潜在影响,并能够在执行操作之前确认操作。

posted @ 2022-03-27 21:11  DB乐之者  阅读(38)  评论(0编辑  收藏  举报