Garantiert SQL Server eine genaue Datenspeicherung? Wenn das so ist, wie?

7

Diese Frage ist spezifisch für SQL Server, andere DB-Antworten sind jedoch willkommen.

Lesen Sie unten für einige Geschichte. Meine kurze Frage lautet: Wie garantiert SQL Server, dass "ABCDE" geschrieben wird, wenn ich "ABCDE" in die Datenbank schreiben möchte, nicht "ABECD"? Es wurde vorgeschlagen, die Daten erneut zu lesen und zu vergleichen, um die gleichen Ergebnisse mit der offensichtlichen Leistungseinbuße zu gewährleisten.

Das Unternehmen, für das ich arbeite, bringt für uns ein hochvolumiges Produkt auf den Markt (~ 35.000 Stück pro Tag), für das wir in SQL Server gespeicherte Daten sammeln.

Bei früheren Produkten mit geringerem Volumen wurden Daten lokal in SQL Server Express-Datenbanken in der Leitung gespeichert und dann mithilfe serverübergreifender Transaktionen regelmäßig auf den Server (SQL Server Standard) kopiert. Gelegentlich wurden diese Desktop-Datenbanken beschädigt und mussten häufig wiederhergestellt werden.

Der Prozess unseres neuen Produkts schreibt direkt auf den Server und umgeht den lokalen / Desktop-Speicher.

Unser Management überträgt diese Erfahrung der "Desktop-Korruption" auf das neue Produkt.

Abgesehen von Appellen an die Behörde (Microsoft wäre nicht im Datenbankgeschäft tätig, wenn die Daten nicht korrekt gespeichert würden) oder anekdotischen Erfahrungen als Beweis (in meinen fünf Jahren bei der Verwaltung von SQL Server-Datenbanken wurde noch nie eine Serverdatenbank [Standard / Enterprise]) beschädigt), gibt es eine Microsoft-Dokumentation, die auf SQL Server "Garantien" verweist?

Dies ist eine so grundlegende Wahrheit, die insbesondere bei den Standard-Playern (DB2, Oracle, SQL Server) selten in Frage gestellt wird.

Vielen Dank!


quelle
1
Sie können den Prüfsummenschutz verwenden , um die Erkennung von Problemen wahrscheinlich zu machen. Ich bin mir nicht sicher, ob eine 100% ige Garantie der Fehlervermeidung oder -erkennung möglich ist, da dies von der Hardware abhängt.
Martin Smith
Welche Art von Korruption haben Sie mit der Express-Version erlebt?
Martin Smith
Entschuldigung, ich weiß nichts über die Korruption. Es ging immer darum, schnell einsatzbereit zu sein, daher haben wir die Datenbank im Allgemeinen nur wiederhergestellt. Dies sind jedoch Desktop-Computer, auf denen eine Vielzahl von Programmen ausgeführt wird, darunter SQL Server Express, Programme für den Leitungsbetrieb, Virenscanner usw. Dies ist ein interessanter Punkt. Verfügt Express über dieselben Datengarantien wie Standard, Workgroup oder Enterprise? Es ist gut, dass wir uns von der lokalen Datenspeicherung entfernen.
1
@ logo1664 - Nach meiner eigenen Erfahrung mit umfangreichen Desktop-Bereitstellungen von Express (dies gilt für Backoffice-Berichte in POS-Systemen) treten die einzigen Fehler aufgrund von Hardwareproblemen oder Umweltproblemen (Stromausfall beim Schreiben der Datenbank) auf. Wir hatten über 1000 Sites bereitgestellt, jede Site mit mindestens 1 GB Datenbank, einige mit bis zu 7 Datenbanken, und ich hatte nie ein nicht zuordenbares Problem mit der Datenintegrität.
JNK
1
Das Speichern von Daten auf dem Desktop bedeutet, dass sie Risiken ausgesetzt sind, die normalerweise nicht für Server gelten, z. B. Stromausfälle, unerwartete Abschaltungen und Störungen durch andere Software. Außerdem unterstützen Desktop-Laufwerkscontroller nicht die Art von Schreibgarantien, die für die Speicherung von Rechenzentren üblich sind. Das hört sich also nicht so an, als hätten Sie ein Problem mit SQL Server. Viel wahrscheinlicher liegt es an den Einschränkungen beim Ausführen von Daten auf dem Desktop. Fragen Sie Ihre Serveradministratoren nach den Hochverfügbarkeitsfunktionen Ihrer Server, USV und Speicher.
Nvogel

Antworten:

4

Alle wichtigen SQL-Datenbanken bieten dies. Es wird als ACID-konform bezeichnet . Dies ist wahrscheinlich der Schlüsselbegriff, den Sie in der Dokumentation (und / oder bei Google) nachschlagen müssen.

Wie sie es tun, MS SQL Server ist wie Oracle Closed Source, so dass niemand außerhalb des Unternehmens diese Frage wirklich beantworten kann, aber wie Sie sagen, wenn sie es nicht für große Systeme verwaltet haben, Ihre Produkte würden sehr schnell vom Markt genommen.


quelle
3

Die Antwort auf diese Frage lautet "nein".

Ich habe gerade die SQL Server 2008-Interna gelesen und das letzte Kapitel in diesem Buch, das Paul Randal über DBCC-Interna geschrieben hat, behandelt die Vielzahl möglicher Beschädigungen, die bei Datenbankseiten auftreten können, die von erkannt werden können DBCC CHECKDB.

Sie können den Prüfsummenschutz für Ihre Datenseiten, Sicherungen und regelmäßige Überprüfungen auf Beschädigung mit verwenden DBCC CHECKDB

Ihr Plan, Daten zu schreiben und erneut zu lesen, scheint etwas sinnlos zu sein, denn wenn Sie nicht ständig laufen, checkpointum sicherzustellen, dass alle schmutzigen Seiten auf die Disc geschrieben werden, dbcc dropcleanbufferswird Ihnen die Seite wahrscheinlich trotzdem direkt aus dem Speicher übergeben.

Martin Smith
quelle
2

Kann mit SQL Server nicht helfen, aber Oracle verfügt über einige Parameter, die zur Überprüfung auf Speicher- oder Festplattenbeschädigung festgelegt werden können, einschließlich DB_BLOCK_CHECKSUM und DB_BLOCK_CHECKING . Am oberen Ende kann Oracle automatisch zu Sicherungen oder einem DR-Speicherort wechseln, um eine "saubere" Kopie des beschädigten Blocks zu erhalten.

Natürlich kann eine RAID-Konfiguration auch zum Schutz vor Festplattenfehlern beitragen. Wie in den Kommentaren erwähnt, entspricht ein Desktop-Computer auf Hardwareebene nicht den gleichen Ausfallsicherheitsstandards wie ein Server.

Gary
quelle