SQL Serverデータベースのテーブルの列の1つに「常に暗号化」を設定しました。 「列暗号化設定=有効」オプションを渡した後、クライアントSSMSからデータを選択して表示できます。
しかし、テーブルにデータを挿入しようとすると、次のエラーが発生します。
メッセージ206、レベル16、状態2、行1のオペランドタイプの衝突:varcharは、(encryption_type = 'RANDOMIZED'、encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256'、column_encryption_key_name = 'CEK_Autoname'_column_en_keyname'_column_en_keyname_)で暗号化されたvarchar(8000)と互換性がありませんcollation_name = 'SQL_Latin1_General_CP1_CI_AS'
ここでは、単純な挿入TSQLステートメントをクエリしています。それを機能させるには、どのような変更を加える必要がありますか?
また、アプリケーションを介して暗号化された列を更新または挿入する場合、アプリケーションまたはアプリケーションコードにどのような変更を加える必要がありますか?
SSMSが使用しているAPIに対してクエリをパラメーター化できるように、値には変数を使用する必要があります。何かのようなもの:
DECLARE @fname varchar(30) = 'Kula'
DECLARE @ename varchar(30) = 'Kalle'
DECLARE @pnr varchar(11) = '752312-4545'
DECLARE @age tinyint = 45
insert into dbo.Personer2 (Förnamn, Efternamn, Personnummer, Ålder)
VALUES (@fname, @ename, @pnr, @age)
SELECT * FROM Personer2