2016-09-27 2 views
0

Ich bin in einer Situation, in der ich aus einer proprietären Datenbank lese, die ich für meine Bedürfnisse nicht ändern kann. Die genialen Architekten haben eine schrecklich normalisierte Datenbank und wenn sie den Server in Dev aufbauten, dachten sie nicht, die Primärschlüssel (Integer-Identitätswerte) zwischen Dev und Prod zu vergleichen.Synchronisieren von hartcodierten Werten zwischen Prod und Dev

In dieser Situation mussten wir die Abfragen schreiben, in denen wir hartcodierte Werte verwenden - Beispiel where productid = 12345. 12345 ist nicht immer das gleiche Produkt in Dev wie Produktion. Dies bedeutet, 2 Sätze SQL-Code zu verwalten. Außerdem besteht ein hohes Risiko für potenzielle Fehler (es werden keine korrekten Skripts bereitgestellt). Ich bevorzuge den Teststandard in Dev und verwende den exakt gleichen Code für die Produktion. Dies minimiert das Risiko.

Hinweis: Ich vereinfache dies für die Zwecke dieses Beispiels, aber die Art, wie es entworfen wurde und die Art, wie wir die Abfrage durchführen müssen, erfordert die harte Codierung. (Entschuldigung für meinen blashpemy).

Jemand sagte, dass Sie dies mit SQL Server Token Replacement tun können, aber ich kann nicht scheinen, zu viel zu finden, online. Anscheinend können Sie die Werte, die Sie benötigen (Produkt-IDs), in einer SQL-Datei festlegen, und sie wird auf dem Server bereitgestellt, wobei tokens durch die korrekten hartcodierten Werte ersetzt wird.

Ich bin nur auf der Suche nach ein paar Tipps für den Einstieg.

+1

einfach eine Tabelle erstellen, mit den Feldern und Werten, die Sie in Ihrer Datenbank benötigen . Fügen Sie die entsprechenden Umgebungs-IDs in diese Tabelle ein. Schreiben Sie Ihre Abfragen, indem Sie die Werte aus dieser Tabelle ziehen. – techspider

Antwort

1

Sie können mit einer Parametertabelle dieses Problem umgehen:

Parameter Value 
ProductId 12345 

und eine Funktion, die Parameter zu erhalten:

WHERE productid = (SELECT Parameter('ProductId')) 
+0

danke ... interessant, ich werde in das – logixologist

+1

suchen Dies ist wahrscheinlich die beste Lösung für die geringste Investition. Ich war mit etwas ähnlichem konfrontiert, aber sie waren Schlüssel und nicht Identitäten ... also biss ich in die Kugel und schrieb tatsächlich ein Skript, das alle notwendigen Aktualisierungen vornehmen würde, um die Schlüssel in allen Datenbanken gleich zu machen. Es war eine große einmalige Ausgabe, die das Problem in der Zukunft beseitigte. Aber das ist nicht immer machbar. Und das war ein ganz besonderer Fall, wo es war. – pmbAustin

Verwandte Themen