我有一个 Windows 窗体应用程序。它允许用户恢复 SQL Express 数据库。
应用程序中最新版本的 SQL Server 现在是 SQL Server 2017。客户可以恢复 SQL Server 2008 R2 数据库的旧备份。
我想在使用 C# 执行恢复后启用 Always Encrypted (AE)。
谁能帮我实现这个目标?
为新数据库启用 AE 没有问题。我希望在将旧数据库恢复到应用程序后拥有 AE。恢复通过 T-SQL 命令进行。
我尝试使用 PowerShell 启用 AE。我收到sqlserver
模块错误。有什么方法可以使用 T-SQL 添加 AE?
错误是:
System.Management.Automation.CommandNotFoundException:
'术语 'Get-SqlDatabase' 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
PowerShell 中的此错误;但是,我真的很想在 C# 中不使用 PowerShell 来做 AE。
我试过了:
Alter table test3
alter column C3 varchar(50) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1],
ENCRYPTION_TYPE = Deterministic,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
当表中有数据时,此命令不起作用。
我可以使用 c# 实现始终加密。使用 Management Studio 生成 powershell 脚本。
在顶部的脚本中添加以下导入模块。
然后使用以下代码运行 PS 脚本