Problembehandlung beim Datenzugriff in Visual Studio

Aktualisiert: November 2007

Dieses Thema enthält eine Auflistung häufiger Probleme, die beim Datenzugriff in Visual Studio auftreten können.

Ich habe keinen Zugriff auf eine Datenbank zur Laufzeit, auf die ich zur Entwurfszeit zugreifen kann

Diese Situation ist mit großer Wahrscheinlichkeit darauf zurückzuführen, dass der zur Laufzeit übergegebenen Kombination aus Benutzername und Kennwort der Zugriff auf die Datenbank verweigert wird. Die Lösung richtet sich nach dem von der Datenbank verwendeten Authentifizierungs- und Autorisierungsverfahren sowie nach der Verbindungszeichenfolge.

Eine mögliche Ursache dieses Problems ist:

  • Sie haben im Dialogfeld "Verbindung hinzufügen/ändern" (Allgemein) die Option Spezifischen Benutzernamen und Kennwort verwenden aktiviert, ohne die Option Speichern des Kennworts zulassen aktiviert zu haben. In diesem Szenario werden Sie zur Eingabe eines Benutzernamens und eines Kennworts aufgefordert, wenn Sie zur Entwurfszeit versuchen, eine Verbindung zur Datenquelle herzustellen. Für das Herstellen der Verbindung zur Laufzeit müssen Sie in der Anwendung eine Funktion integrieren, von der der richtige Benutzername und das richtige Kennwort an die Datenquelle übergeben werden.

Zu überprüfende Aspekte:

  • Stellen Sie sicher, dass der Benutzername und das Kennwort, die von der Anwendung verwendet werden, über ausreichende Berechtigungen für den Zugriff auf die Datenquelle verfügen.

  • Stellen Sie sicher, dass der Benutzer in der Datenbank über die erforderlichen Berechtigungen verfügt.

  • Stellen Sie sicher, dass zwischen dem Computer, auf dem die Anwendung ausgeführt wird, und der Datenquelle eine Netzwerkverbindung besteht.

Falsche oder fehlende Ausgabeparameter werden bei der Ausführung eines SQL-Befehls zurückgegeben

Diese Situation ist mit großer Wahrscheinlichkeit auf eine falsche Einstellung für die Direction-Eigenschaft des Parameters zurückzuführen. Die Direction-Eigenschaft des Parameters ist auf einen in der ParameterDirection-Enumeration definierten Wert festgelegt.

  • Stellen Sie sicher, dass für die Direction-Eigenschaft des Parameters ein Wert festgelegt ist, der Daten empfangen kann (Ausgabe für Ausgabeparameter).

  • Stellen Sie sicher, dass der Datentyp des Parameters mit dem des erwarteten Rückgabewerts übereinstimmt.

    Hinweis:

    Ausgabeparameter werden am Ende des Datenstreams zurückgegeben. Wenn Sie das DataReader-Objekt (z. B. SqlDataReader) verwenden, müssen Sie es deshalb schließen bzw. bis ans Ende der Daten lesen, damit die Ausgabeparameter sichtbar werden.

Weitere Informationen zu nicht zurückgegebenen Ausgabeparametern sowie ein Codebeispiel finden Sie im KB-Artikel Q308051 auf der Website des Microsoft-Produktsupports (https://support.microsoft.com/?in=de).

Ich erhalte den Fehler 'Der .NET Data SQL Anbieter (System.Data.SqlClient) erfordert mindestens Microsoft Data Access-Komponenten (MDAC) Version 2.6'

Das Microsoft Windows Software Development Kit (SDK) und das .NET Framework Redistributable-Paket beinhalten nicht die Installation von MDAC. Alle .NET Framework-Anwendungen, von denen Datenzugriffsfunktionen genutzt werden, benötigen MDAC 2.6 oder höher (empfohlen wird MDAC 2.8 SP1). Die neueste Version von MDAC (Microsoft Data Access Components) kann von der Microsoft-Website (https://www.microsoft.com) heruntergeladen werden.

Da Visual Studio standardmäßig MDAC installiert, tritt dieser Fehler mit großer Wahrscheinlichkeit dann auf, wenn die Bereitstellung auf einem Computer erfolgt, auf dem Visual Studio nicht installiert ist.

Wenn Sie die Anwendung bereitstellen, können Sie vom Setup-Programm auf dem betreffenden Computer die Version von MDAC ermitteln lassen. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen einer Startbedingung für Microsoft Data Access Components.

Ich erhalte eine unerwartete Ausnahme beim Versuch, einen Commit- oder Rollback-Vorgang für eine Transaktion auszuführen

Wenn ein Fehler an der Datenquelle zur Folge hat, dass eine Transaktion sofort rückgängig gemacht wird, kann in der Anwendung eine der folgenden Fehlermeldungen angezeigt werden:

  • "Die COMMIT TRANSACTION-Anforderung hat keine entsprechende BEGIN TRANSACTION."

  • "Die ROLLBACK TRANSACTION-Anforderung hat keine entsprechende BEGIN TRANSACTION."

Dieses Verhalten ist zwar programmbedingt, dennoch sollten Methoden, die auf externe Datenquellen zugreifen (z. B. die Commit-Methode und die Rollback-Methode), immer aus einer Try...Catch-Anweisung heraus aufgerufen werden. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Try-Catch-Blocks zum Abfangen von Ausnahmen (Visual Basic) oder try-catch (C#-Referenz).

Ich erhalte eine InvalidOperationException beim Versuch, Tabellen aus einem Dataset zu entfernen

Wenn ein Dataset an ein XmlDataDocument gebunden ist, das die Clear-Methode aufruft, wird folgende Ausnahme ausgelöst:

System.InvalidOperationException: Tabellen des DataSets können nicht mehr hinzugefügt oder entfernt werden, sobald das DataSet einem geladenen XML-Dokument zugeordnet ist.

Das Löschen der Daten aus einem Dataset, das an ein XmlDataDocument-Objekt gebunden ist, setzt das Navigieren in der Tabelle und das Entfernen der einzelnen DataRow-Objekte voraus. Weitere Informationen über das Entfernen von Datenzeilen aus einer Datentabelle finden Sie unter Gewusst wie: Löschen von Zeilen in einer DataTable und DataRowCollection.RemoveAt-Methode.

Wenn ich Elemente aus dem Datenquellenfenster ziehe, sind die Beschriftungstitel nicht korrekt

Beim Ziehen von Elementen aus dem Datenquellenfenster werden die Spaltennamen auf der Grundlage eines standardmäßigen regulären Ausdrucks verändert. Wenn im Spaltennamen auf einen Kleinbuchstaben ein Großbuchstabe folgt, wird ein Leerzeichen zur Trennung der beiden Wörter eingefügt. Zusätzlich werden alle Unterstriche im Spaltennamen durch Leerzeichen ersetzt. Weitere Informationen über die Steuerung dieses Verhaltens finden Sie unter Gewusst wie: Anpassen der Erstellung von Beschriftungen für datengebundene Steuerelemente durch Visual Studio.

Das Abrufen und Anzeigen von Daten erfolgt anscheinend zu langsam

Wenn das Projekt eine BindingSource-Komponente verwendet, versuchen Sie, RaiseListChangedEvents auf False festzulegen. Damit wird verhindert, dass ListChanged-Ereignisse für die Liste eintreten, und die Leistung für große Datasets wird möglicherweise erhöht.

Nach der Installation unter Windows 2000 schlägt die Ausführung der Anwendung mit der Warnung fehl, dass MDAC 2.8 erforderlich ist

Für jede Anwendung, die auf den System.Data-Namespace verweist, ist Microsoft Data Access Components (MDAC) Version 2.8 oder höher erforderlich. In den meisten Fällen ist diese Datei bereits mit dem Betriebssystem installiert. Auf Computern mit Windows 2000 Service Pack 3 oder früheren Versionen kann es hingegen notwendig sein, die Komponente zusammen mit der Anwendung zu installieren. Dazu wird die Komponente dem Bootstrapperpaket hinzugefügt und die Datei während der Installation von Microsoft heruntergeladen. Weitere Informationen finden Sie unter Voraussetzungen für die Bereitstellung (Visual Studio).

Datenbankgenerierte Werte bei Einfüge- oder Aktualisierungsvorgängen geben NULL für LINQ to SQL-Klassen zurück

LINQ to SQL behandelt datenbankgenerierte Werte für die Identitätsspalte (automatisch inkrementiert), die ROWGUID-Spalte (datenbankgenerierte GUID) und Timestamp-Spalte automatisch. Datenbankgenerierte Werte in anderen Spaltentypen führen unerwartet zu einem NULL-Wert. Um die datenbankgenerierten Werte zurückzugeben, sollte manuell IsDbGenerated auf true und AutoSync auf eine der folgenden Einstellungen festgelegt werden: Always, OnInsert oder OnUpdate.

Siehe auch

Konzepte

Neue Datenfeatures

Übersicht über das Anzeigen von Daten

Weitere Ressourcen

Exemplarische Vorgehensweisen zur Arbeit mit Daten

Erste Schritte mit dem Datenzugriff

Herstellen von Datenverbindungen in Visual Studio

Vorbereiten der Anwendung auf den Empfang von Daten

Abrufen von Daten für die Anwendung

Anzeigen von Daten in Formularen in Windows-Anwendungen

Bearbeiten von Daten in der Anwendung

Überprüfen von Daten

Speichern von Daten

LINQ to SQL