Ich bin auf der Suche nach einer selbstentwickelten Möglichkeit, Produktionsdaten für die Verwendung in Entwicklung und Test zu verschlüsseln. Ich habe ein paar Skripte erstellt, die zufällige Sozialversicherungsnummern erzeugen, Geburtsdaten verschieben, E-Mails verschlüsseln usw. Aber beim Versuch, Kundennamen zu verschlüsseln, bin ich gegen eine Wand gestoßen. Ich möchte die echten Namen beibehalten, damit wir sie weiterhin verwenden oder suchen können, also scheidet die Erzeugung zufälliger Buchstaben aus. Bisher habe ich versucht, eine temporäre Tabelle mit allen Nachnamen in der Tabelle zu erstellen und dann die Kundentabelle mit einer zufälligen Auswahl aus der temporären Tabelle zu aktualisieren. Etwa so:
DECLARE @Names TABLE (Id int IDENTITY(1,1),[Name] varchar(100))
/* Scramble the last names (randomly pick another last name) */
INSERT @Names SELECT LastName FROM Customer ORDER BY NEWID();
WITH [Customer ORDERED BY ROWID] AS
(SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS ROWID, LastName FROM Customer)
UPDATE [Customer ORDERED BY ROWID] SET LastName=(SELECT [Name] FROM @Names WHERE ROWID=Id)
Dies hat im Test gut funktioniert, ist aber bei größeren Datenmengen (>20 Minuten für 40K Zeilen) völlig unbrauchbar.
Wie würden Sie Kundennamen verschlüsseln, ohne die echten Namen und die Bedeutung der Produktionsdaten zu verändern?
UPDATE : Es passiert immer wieder, dass man versucht, alle Informationen in den Beitrag zu packen, und dabei etwas Wichtiges vergisst. Diese Daten werden auch in unseren öffentlich zugänglichen Verkaufs- und Demoumgebungen verwendet. Einige der Antworten entsprechen dem, was ich zu tun versuche, nämlich die Namen zu "tauschen", aber meine Frage ist wörtlich, wie man in T-SQL codiert?