0

Ich versuche, die Always Encrypt-Funktion von SQL Server 2016 zu praktizieren. Ich verwende eine vorhandene Anwendung und Datenbank dafür.Aktualisieren/Einfügen von Zeilen in SQL-Tabelle mit verschlüsselten Spalten mit LinqToSQL - Immer verschlüsseln

Ich habe eine Tabelle [Benutzer], wo ich die 'Passwort' Spalte mit 'deterministischen' Typ verschlüsselt habe. Ich habe die Verbindungszeichenfolge geändert und kann alle Zeilen abrufen. Ich habe das Repository für diese Tabelle erstellt.

Ich versuche, Zeilen in dieser Tabelle mit LinqToSQL mit InsertOnSubmit() und SubmitChanges() einzufügen und zu aktualisieren.

Aber wenn ich versuche, neue Zeilen einfügen oder bestehende Zeilen aktualisieren, erhalte ich die Fehlermeldung:

Msg 206, Level 16, State 2, Line 7 Operand type clash: varchar is incompatible with varchar(20) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'BRO_UAT') collation_name = 'Latin1_General_BIN2'

I Artikel gelesen haben, wo gespeicherte Prozeduren verwenden und Parametrisierung das Problem gelöst hat. Aber, wie ich bereits erwähnt habe, ist dies ein bestehendes Projekt, und ich habe LinqToSql verwendet und möchte den Code nicht ändern. Einfügen/Aktualisieren funktioniert einwandfrei, wenn die Spalte nicht verschlüsselt ist!

Fehle ich etwas Einstellung? Bitte zeigen Sie mir in die richtige Richtung.

Antwort

1

Ändern Sie Ihre Spalte zu nvarchar und überprüfen Sie. Auch jetzt noch das Speichern des Passworts ist nicht der beste Ansatz, speichern Sie stattdessen eine Signatur und validieren Sie diese Signatur bei der Validierung des Passworts.

Überprüfen Sie den Link für die gleichen. https://social.msdn.microsoft.com/Forums/en-US/77bb69f0-590e-40f5-b5e9-714bf590e008/how-to-handle-encrypted-column?forum=linqtosql

+0

Dank Mukhesh. Dies scheint für einige meiner Tests in Ordnung zu sein, ich werde einen Coup von Szenarien prüfen und Ihre Antwort akzeptieren. Vielen Dank für deine Hilfe. Dieses einfache Problem brachte mich dazu, meine Haare zu ziehen! – AnkitMittal

+0

Der Fehler varchar ist nicht kompatibel mit varchar (20) gibt auch einen Fall an, wenn die Größe Ihrer Spalte kleiner ist als der konvertierte Schlüssel, der generiert wird, und deshalb können Sie ihn nicht speichern. Sie können auch versuchen, die Größe der Spalte in der Datenbank zu erhöhen. –

+0

Das ist genau was ich getan habe. Ich habe die Größe auf Varchar (8000) erhöht und es hat funktioniert. – AnkitMittal

Verwandte Themen