Sql server SSDT部署后和;总是加密的
将种子数据部署到已启用AlwaysEncrypted的表时,SSDT中存在问题 SQL Server 2019企业版 Windows Server 2016数据中心 Visual Studio 2019社区版16.7.2(截至本文的当前版本) 列主密钥、列加密密钥和列定义在项目中,DB部署时不会出现问题。以下是部署后脚本:Sql server SSDT部署后和;总是加密的,sql-server,sql-server-data-tools,database-project,always-encrypted,ssdt-2019,Sql Server,Sql Server Data Tools,Database Project,Always Encrypted,Ssdt 2019,将种子数据部署到已启用AlwaysEncrypted的表时,SSDT中存在问题 SQL Server 2019企业版 Windows Server 2016数据中心 Visual Studio 2019社区版16.7.2(截至本文的当前版本) 列主密钥、列加密密钥和列定义在项目中,DB部署时不会出现问题。以下是部署后脚本: SET IDENTITY_INSERT DBO.Table1 ON IF NOT EXISTS (SELECT * FROM DBO.Table1 WHERE Table1
SET IDENTITY_INSERT DBO.Table1 ON
IF NOT EXISTS (SELECT * FROM DBO.Table1 WHERE Table1ID = 0)
BEGIN
--need to parameterize values for always encrypted columns
declare @fname nvarchar(20) = ''
declare @lname nvarchar(25) = ''
INSERT INTO DBO.Table1 (Table1ID, [FirstName], [LastName], [DateOfBirth] )
VALUES (0,@fname,@lname,'2999-09-09')
END
SET IDENTITY_INSERT DBO.Table1 OFF
当在设置了AlwaysEncrypted标志的SSMS中直接执行此操作时,插入成功。在正常模式和SQLCMD模式下都是如此
当通过已发布的配置文件使用SSDT发布时,我得到以下错误:
(101,1):SQL72014:.Net SqlClient数据提供程序:Msg 33277,级别16,状态6,第13行列/变量“@fname”的加密方案不匹配。列/变量的加密方案是(encryption_type='PLAINTEXT'),第'13'行附近的表达式希望它是确定性的,或纯文本。
(89,0):SQL72045:脚本执行错误。执行的脚本:
进行一些研究后,似乎在发布配置文件中没有设置连接字符串设置“Column Encryption setting=Enabled”。如果尝试在SSMS中运行生成的部署脚本而不设置AlwaysEncrypted标志,则会出现相同的错误。试图通过用户界面设置,它会恢复为“禁用”,并且无论我做什么都不会保存。然后,我尝试将其直接保存到发布配置文件XML中,而不是通过UI,虽然它确实保存了,但错误不会更改
我尝试在启用SQLCMD模式且AlwaysEncrypted标志set=true的情况下,在SSMS中从SSDT执行生成的部署脚本,有趣的是,我得到了一个不同的错误。这个错误是:
执行批处理时出错。错误消息是:ExecuteReader:CommandText属性尚未初始化
问题: