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参数。这允许您查看脚本操作的潜在影响,并能够在执行操作之前确认操作。