Dev-Insider: Editieren von Datenbankwerten mittels SQL Server Management Studio (SSMS)
Montag, 2. März 2020

Dev-Insider: Editieren von Datenbankwerten mittels SQL Server Management Studio (SSMS)

Verfasser: Marcus

Der generelle Weg, um Shop-Daten zu ändern führt entweder übers Backend oder über einen Datenimport. In manchen Fällen können Daten auch direkt per SQL (Structured Query Language) eingefügt, verändert oder gelöscht werden. Solche SQL-Anweisungen lassen sich auch ohne zusätzliche Software direkt übers Shop-Backend absetzen (siehe System > Wartung). Generell empfiehlt es sich hier vorher ein Datenbank-Backup anzulegen, um bei Unfällen den alten Datenstand wiederherstellen zu können.

Es existiert aber noch ein weiterer Weg: das direkte editieren von Datenbankwerten mittels SQL Server Management Studio (SSMS). Anhand eines Beispiels wird dieser Weg im folgenden veranschaulicht. Die Aufgabe: die Reihenfolge aller Optionen des Spezifikationsattributes "Farbe" zu ändern. Die Menübefehle von SSMS sind in diesem Beispiel in Englisch, weil ich die Englische Version von SSMS installiert habe.

Zunächst benötige ich die ID des Spezifikationsattributes "Farbe". Die ID ist der von der Datenbank automatisch erzeugte, unveränderbare Primärschlüssel eines Datensatzes. Den Wert erhalte ich entweder über die Datentabelle "SpecificationAttribute" oder über das Shop-Backend unter Katalog > Spezifikationsattribute > Farbe. In diesem Fall lautet die ID 2.


Als nächstens suche ich im Objekt-Explorer von SSMS unterhalb unserer Datenbank nach der Tabelle SpecificationAttributeOption. Sie enthält die Optionen aller Spezifikationsattribute. Über einen Rechtsklick auf den Tabellennamen wähle ich den Befehl "Edit Top 200 Rows". Die Anzahl der Zeilen, die über diesen Befehl geladen werden lässt sich übrigens per Option unter "Tools > Options > SQL Server Object Explorer > Commands > Value for Edit top <n> Rows command" ändern. Bei 0 werden alle Zeilen bzw. Optionen geladen.

In dem Datenfenster, das sich geöffnet hat, können nun Optionen bereits geändert werden. Allerdings möchte ich nicht die ersten 200 Optionen, sondern die des Spezifikationsattributes "Farbe" ändern. Dazu mache ich einen Rechtsklick ins Datenfenster und wähle "Pane > SQL". Daraufhin wird mir im oberen Fensterteil die SQL-Anweisung zum Laden der Optionen angezeigt, und diese Anweisung kann ich beliebig ändern. Dazu sind einige Grundlagen in SQL notwendig, aber keine Sorge, das ist nicht sonderlich kompliziert. Die Anweisung sieht im Moment wie folgt aus:

SELECT TOP (200) Id, SpecificationAttributeId, Name, DisplayOrder, Alias, NumberValue, MediaFileId, Color
FROM SpecificationAttributeOption

Als erstes entferne ich "TOP (200)", weil ich nicht die ersten 200 Zeilen editieren möchte.

SELECT Id, SpecificationAttributeId, Name, DisplayOrder, Alias, NumberValue, MediaFileId, Color
FROM SpecificationAttributeOption

Hinter SELECT sind kommagetrennt sämtliche Feldnamen der Tabelle SpecificationAttributeOption aufgeführt. Diese können sich im Rahmen von Updates von SmartStore.NET durchaus ändern. Mich interessieren hier eigentlich nur Name (der Optionswert), DisplayOrder (die Reihenfolge) und zur Kontrolle noch das Feld SpecificationAttributeId, welches die ID des zugehörigen Spezifikationsattributes enthält. Also entferne ich alle anderen Feldnamen aus der Anweisung.

SELECT SpecificationAttributeId, Name, DisplayOrder
FROM SpecificationAttributeOption

Hinter FROM steht der Name der Tabelle, deren Daten geladen werden sollen. Das bleibt natürlich so stehen. Nun möchte ich aber nicht alle Optionen laden (ich hatten ja zuvor das Top 200 entfernt), sondern nur die des Spezifikationsattributes "Farbe". Dazu füge ich unter Verwendung der Spezifikationsattribut-ID für "Farbe" (in diesem Fall wie erwähnt die 2) eine sogenannte Where-Bedingungen an, um eben nur Farboptionen zu laden.

SELECT SpecificationAttributeId, Name, DisplayOrder
FROM SpecificationAttributeOption
WHERE SpecificationAttributeId = 2

Und zu guter Letzt möchte ich die Optionen noch nach ihrem Wert alphabetisch aufsteigend sortiert angezeigt bekommen. Dazu hänge ich eine entsprechende Order-By-Anweisung mit dem gewünschten Feldnamen an.

SELECT SpecificationAttributeId, Name, DisplayOrder
FROM SpecificationAttributeOption
WHERE SpecificationAttributeId = 2
ORDER BY Name

Für eine absteigende Sortierung würde die Anweisung ORDER BY Name DESC lauten. Um die überarbeitete SQL-Anweisung auszuführen mache ich einen Rechtsklick in das Anweisungs- oder das Datenfenster und wähle "Execute SQL".


Um die Optionen auch im Shop alphabetisch sortiert zu halten, muss ich nun einfach in der Spalte "DisplayOrder" hochzählende Werte eintragen. Es empfiehlt sich Lücken zwischen den Werten zu lassen, um bei neuen Farben leichter die Sortierung aufrecht erhalten zu können.


Mehr zum Thema:

Video von Daniel Beckemeier: Arbeiten mit dem SQL Server Management Studio (SSMS)
"Microsoft SQL-Server für blutige Anfänger". In diesem Video verbinden wir uns mit dem SQL Server Management Studio mit unserem Server, erstellen eine Datenbank und erzeugen Tabellen. Hierbei lernen wir die Ausführung von SQL-Statements und die grafische Benutzeroberfläche des SQL Server Managementstudios kennen.

Herunterladen von: SQL Server Management Studio (SSMS)
Ihr Kommentar

Kommentare (1)

G
Gast | Vor einem Monat

Sehr nützlich und äußerst zeitsparend. Danke für diesen Beitrag, ist wichtig für viele Shopbetreiber. --Stefan