Hallo zusammen,
heute wurde uns bei der MSDN Hotline
unter anderem folgende Frage gestellt:
Ich habe Probleme mit meiner SQL-Verbindung (SqlConnection). Ich verwende die Befehle CREATE DATABASE und CREATE TABLE, aber der SQLServer meldet einen Fehler.
Was kann ich tun?
Unsere Antwort bzw. unser Lösungsvorschlag darauf war:
Sie erhalten wahrscheinlich den Fehler "CREATE DATABASE statement not allowed within multi-statement transaction". Das ist so gewollt - bestimmte Statements sind
innerhalb von Transaktionen verboten. Das hat verschiedene Gründe, beispielsweise technische Machbarkeit oder Performanz. In diesem Fall ist das aber unproblematisch, weil im Fehlerfall
statt mit Rollback einfach DROP DATABASE die Änderungen rückgängig gemacht werden. (Sollte das ebenfalls fehlschlagen, ist mit automatisierten Methoden ohnehin nicht mehr zu reagieren.)
CREATE TABLE kann mit Transaktionen verwendet werden, allerdings sollten Schema-Befehle immer sparsam verwendet werden. Wenn Ihre Anwendung viele Schema-Befehle (CREATE, DROP, ALTER) gleichzeitig ausführt, sollten Sie wahrscheinlich Ihr Datenbank-Layout
überdenken. DDL-Befehle verursachen Locks in den Systemtabellen und können auf manchen Systemen die Performanz erheblich
verringern. Ein gutes Datenbank-Layout wird nur einmal (bei der Installation) festgelegt und ausschließlich bei Migration oder Modernisierung verändert.
Wir hoffen, vielen Besuchern der MSDN Foren
durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.
Viele Grüße,
Jonathan Best
MSDN Hotline für MSDN Online Deutschland
Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline:
http://www.msdn-online.de/Hotline
Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu
Markenzeichen
Informationen zur Datensicherheit sowie die gesonderten
Nutzungsbedingungen für die MSDN Hotline.