sql-server - 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
任何想法为什么代码运行但不加密列?
解决方案
https://docs.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module?view=sql-server-2017
按照上面的说明进行一些修改
以管理员身份运行 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
推荐阅读
- json - 我的 curl HTTP POST 请求正在检索没有文件名的 pdf 文件
- jmeter - NoClassDefFoundError:无法在 JMeter 中初始化类
- java - Vert.x Web (Scala):从路由器读取多部分文件上传作为流而不保存到磁盘
- flutter - 颤振:没有互联网连接时返回页面
- mysql - MySQL 5.1 编码问题 Entity framework core
- apache-beam - 限制 Apache Beam 步骤的工作程序/线程数
- background - 如何解决“每一页”的 LaTeX 包警告?
- python - 如何使用 PySimpleGUI 创建允许我浏览文件的自定义按钮?
- flutter - 如何使按钮填充宽度
- angular - 为什么一个带有自定义指令的元素会触发 Angular 中的另一个元素更改事件?