如何解决使用Powershell将数据插入“始终加密”的Azure SQL DB表中
我有一个带有Always encrypted table and keys stored in Azure KeyVault的Azure sql数据库。我希望使用Powershell将数据插入“始终加密”表中。
我了解Invoke-sqlcmd不支持,并且我正在使用sqlCommand.ExecuteNonQuery方法()实现相同的目的
$connStr = "Server={0};Database={1};User ID={2};Password={3};Column Encryption Setting=enabled;" -f $sqlDBServerInstance,$sqlConnectionInfo.DatabaseName,$sqlConnectionInfo.UserName,$sqlConnectionInfo.Password
$sqlConn = New-Object System.Data.sqlClient.sqlConnection
$sqlConn.ConnectionString = $connStr
$sqlConn.open()
$sqlcmd = New-Object System.Data.sqlClient.sqlCommand
$sqlcmd.Connection = $sqlConn
$sqlcmd.CommandText = "INSERT INTO dbo.SecureTable (Column1) VALUES (@Param1)"
$sqlcmd.Parameters.Add((New-Object Data.sqlClient.sqlParameter("@Param1",[Data.sqlDBType]::VarChar,50)))
$sqlcmd.Parameters["@Param1"].Value = "$Param1"
$sqlcmd.ExecuteNonQuery();
运行此代码时,即使我在天蓝色的密钥保管库级别对服务主体指定了正确的加密访问权限(展开,包装,验证,签名),也遇到了以下错误
使用“ 0”参数调用“ ExecuteNonQuery”的异常:“失败 解密列加密密钥。无效的密钥存储提供程序名称: 'AZURE_KEY_VAULT'。密钥库提供者名称必须表示 系统密钥库提供者或注册的自定义密钥库提供者。 有效的系统密钥库提供程序名称为:“ MSsql_CERTIFICATE_STORE”, 'MSsql_CNG_STORE','MSsql_CSP_PROVIDER'。有效(当前注册) 自定义密钥存储提供程序名称为:。请验证密钥存储区 数据库中列主键定义中的提供程序信息, 并确认您的应用程序中使用的所有自定义密钥存储提供程序都是 正确注册。”
here所描述的方式对我不起作用,可能是因为我正在使用Key Vault存储密钥。
要解决此错误,需要执行一个步骤from C# to use InitializeAzureKeyVaultProvider,但是由于我正尝试仅通过Powershell和sqlServer PS模块实现此目标,因此有什么办法可以仅使用Powershell实现此目标吗?不用C#的方式解释here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。