首页 > 解决方案 > SQL Server Management Studio 生成的加密 PowerShell 脚本执行但不起作用

问题描述

在 SSMS 中,我尝试向列添加加密。如果我在对话框中执行此操作,则该过程有效并且该字段被加密。如果我尝试生成一个 PowerShell 脚本来设置加密,经过许多错误消息后,我终于可以无误地执行代码,但数据库中没有任何反应。这是包含所有默认值和标准内容的生成脚本,我以管理员身份运行 PowerShell。

Import-Module SqlServer
# Set up connection and database SMO objects

$sqlConnectionString = "Data Source=MyPC\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=True;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;Packet Size=4096;Application Name=`"Microsoft SQL Server Management Studio`""
$smoDatabase = Get-SqlDatabase -ConnectionString $sqlConnectionString

# If your encryption changes involve keys in Azure Key Vault, uncomment one of the lines below in order to authenticate:
#   * Prompt for a username and password:
#Add-SqlAzureAuthenticationContext -Interactive

#   * Enter a Client ID, Secret, and Tenant ID:
#Add-SqlAzureAuthenticationContext -ClientID '<Client ID>' -Secret '<Secret>' -Tenant '<Tenant ID>'

# Change encryption schema

$encryptionChanges = @()

# Add changes for table [dbo].[MyTable]
$encryptionChanges += New-SqlColumnEncryptionSettings -ColumnName dbo.MyTable.MyField -EncryptionType Randomized -EncryptionKey "CEK_Auto1"

Set-SqlColumnEncryption -ColumnEncryptionSettings $encryptionChanges -InputObject $smoDatabase

任何想法为什么代码运行但不加密列?

标签: sql-serverpowershell

解决方案


https://docs.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/configure-column-encryption-using-powershell?view=sql-server-ver15

按照上面的说明进行一些修改

以管理员身份运行 PowerShell

在此会话中授予要执行的文件的权限 这应该给出正确的权限

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

安装 SQL Server 模块以便 PowerShell 可以访问它

Install-Module -Name SqlServer -AllowClobber

查看 SqlServer 模块中的可用命令

Get-Command -Module SqlServer

如果New-SqlColumnEncryptionSettings不可见,请从

sqlserver.21.1.18218.nupkg.zip

下载自

https://www.powershellgallery.com/packages/SqlServer/21.1.18218

C:\Program Files\WindowsPowerShell\Modules\SqlServer\21.1.18218

然后使用运行powershell脚本

.\test.ps1

推荐阅读