Wie Ersetze ich eine SSN mit einer 9-stelligen Zufallszahl, die in SQL Server 2008R2?
Erfüllen Sicherheitsanforderungen zu erfüllen, muss ich einen Weg finden, Sie zu ersetzen SSN's einzigartige, zufällige 9-stellige zahlen, bevor die Bereitstellung der genannten Datenbank-Entwickler. Die SSN ist in einer Spalte in einer Tabelle einer Datenbank. Es kann 10 ' s von tausenden von Zeilen in der besagten Tabelle. Die Anzahl muss nicht Bindestriche. Ich bin ein Anfänger mit SQL und der Programmierung im Allgemeinen.
Ich nicht in der Lage gewesen, eine Lösung zu finden für meine spezifischen Bedürfnisse. Nichts scheint Recht. Aber wenn Sie wissen, einen thread, den ich verpasst haben, lassen Sie es mich bitte wissen.
Vielen Dank für jede Hilfe!!!
- bitte zeigen Sie uns Ihre Tabellenstruktur (relevanten Feldnamen und Datentypen)
- Ist die Erwartung, dass der Entwickler in der Lage zu entschlüsseln die zufällige Zahl wieder in die richtige SSN? Oder ist die Zufallszahl nur eine eindeutige ID, um den Benutzer zu identifizieren?
- In diesem Fall, es ist nicht notwendig, dass die SSN - es ist eine einzigartige ID. Die Bereitstellung der db für die Entwickler zum testen/debugging-Zwecke, so dass die Datenbank funktioniert aber nur, wenn notwendig, die SSN (und vielleicht auch andere, PII) muss bearbeitet werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist einer.
Ich gehe davon aus, dass Sie bereits eine Sicherung von den realen Daten, wie Sie dieses update ist nicht umkehrbar.
Unten habe ich angenommen, deine Tabelle name ist Person mit Ihrem ssn Spalte mit dem Namen SSN.
Wenn Sie nicht haben, um zufällig zu sein, können Sie einfach ersetzen Sie Sie mit aufsteigender numerischer Werte. Gelingt das nicht, müsste man eine Zufallszahl erzeugen. Wie Sie vielleicht entdeckt haben, die RAND-Funktion erzeugt nur einen einzelnen Wert pro Abfrage-Anweisung (select, update, etc.); der work-around ist die newid () - Funktion generiert eine GUID, die für jede Zeile erzeugt, die von einer Abfrage (run
SELECT newid() from MyTable
zu sehen, wie das funktioniert). Wickeln Sie diesen in eine Prüfsumme() generiert eine integer; modulus, der durch 1,000,00,000 um einen Wert innerhalb der SSN-Bereich (0 bis 999.999.999 ein); und, vorausgesetzt, Sie speichern es als einen char(9) Präfix mit führenden Nullen.Nächste trick ist, sicherzustellen, es ist einzigartig für alle Werte in Ihrer Tabelle. Das wird schwierig, und ich würde es tun, durch die Einrichtung einer temp-Tabelle mit den Werten, füllen Sie es, dann kopieren Sie über. Mieter jetzt...
Diese Werke für eine kleine Tabelle, die ich habe, und es sollte eine große. Ich sehe nicht, das sich in einer endlos-Schleife, aber auch so möchten Sie vielleicht fügen Sie ein Häkchen, um zu beenden die Schleife nach etwa 10 Iterationen,
RAND
Funktion kann erzeugen unterschiedliche Werte pro Zeile, vorausgesetzt, Sie Samen esSELECT RAND(num) AS orly FROM (SELECT 1 UNION ALL SELECT 500000) D(num);
Ich habe ein paar Millionen tests in diesem, und es scheint zu generieren random (URN) 9-stellige zahlen (ohne führende Nullen).
Ich kann mir nicht vorstellen ein effizienter Weg, dies zu tun.
Den test verwendet;
Nicht so schnell, aber am einfachsten... ich habe einige dot ' s...
Wenn das Voraussetzung ist, um zu verschleiern, eine Datenbank, dann wird dieser wieder den gleichen eindeutigen Wert für jeden einzelnen SSN in einer Tabelle die Erhaltung der referenziellen Integrität in der Ausgabe, ohne dass man eine Suche aus und übersetzen.