SQL Server-Problembehandlung

Lösungen für allgemeine SQL Server-Konnektivitäts-, Authentifizierungs- und Entitätskonfigurationsprobleme im Daten-API-Generator.

Häufig gestellte Fragen

Was ist SQL Server-Unterstützung in DAB?

Der Daten-API-Generator unterstützt Microsoft SQL Server und Azure SQL als relationale Datenbank-Back-Ends. DAB stellt eine Verbindung mit dem Microsoft.Data.SqlClient-Treiber und übersetzt REST- und GraphQL-Anforderungen in T-SQL-Abfragen. Sowohl lokale SQL Server-Instanzen als auch Azure SQL-Datenbank werden unterstützt.

Welches Verbindungszeichenfolgenformat verwendet SQL Server?

DAB verwendet ADO.NET-Verbindungszeichenfolgen für SQL Server. Eine typische Zeichenfolge sieht so aus: Server=localhost,1433;Database=mydb;User Id=sa;Password=yourpassword;TrustServerCertificate=True;. Legen Sie die Verbindungszeichenfolge im data-source.connection-string Feld von dab-config.json fest oder übergeben Sie sie über die --connection-string Option in dab init.

Welche Authentifizierungsmodi werden unterstützt?

DAB unterstützt die SQL-Authentifizierung (Benutzername und Kennwort), die integrierte Windows-Authentifizierung und die Microsoft Entra-Authentifizierung (früher Azure Active Directory) für Azure SQL. Um die Entra-Authentifizierung zu verwenden, legen Sie Authentication=Active Directory Default oder Active Directory Managed Identity in der Verbindungszeichenfolge fest und stellen Sie sicher, dass der verwalteten Identität oder dem Dienstprinzipal der Datenbankzugriff gewährt wurde.

Häufig auftretende Probleme

Eine Verbindung mit sql Server-Container kann nicht hergestellt werden.

Symptom: DAB kann aufgrund eines Verbindungsfehlers nicht starten, z. B. A network-related or instance-specific error occurred.

Ursache: Der SQL Server-Containerport ist nicht ordnungsgemäß zugeordnet, der Hostname ist falsch, oder der Container ist noch nicht bereit, Verbindungen zu akzeptieren.

Auflösung: Vergewissern Sie sich, dass der Container mit docker ps läuft. Bestätigen Sie die Portzuordnung (Standard 1433), und verwenden Sie localhost,1433 sie in der Verbindungszeichenfolge. Fügen Sie hinzu TrustServerCertificate=True , wenn Sie ein selbstsigniertes Zertifikat verwenden. Wenn der Container gerade gestartet wurde, warten Sie einige Sekunden, bis SQL Server initialisiert wird, bevor Sie DAB starten.

Anmeldung für Benutzer fehlgeschlagen

Symptom: DAB-Protokolle zeigen Login failed for user 'sa' einen Authentifizierungsfehler oder einen ähnlichen Fehler an.

Ursache: Der Benutzername, das Kennwort oder der Authentifizierungsmodus in der Verbindungszeichenfolge stimmt nicht mit der SQL Server-Konfiguration überein. SQL Server kann auch im Modus "Nur Windows-Authentifizierung" ausgeführt werden.

Auflösung: Bestätigen Sie, dass die Anmeldeinformationen mit denen übereinstimmen, die beim Erstellen des Containers oder Servers festgelegt wurden. Wenn Sie einen Container verwenden, überprüfen Sie die Umgebungsvariable SA_PASSWORD . Um die SQL-Authentifizierung für eine vorhandene Instanz zu aktivieren, legen Sie den Serverauthentifizierungsmodus in SQL Server Management Studio unter >auf SQL Server und Windows-Authentifizierungsmodus fest.

Fehler "Entität nicht gefunden"

Symptom: REST- oder GraphQL-Anforderungen geben einen 404 Oder Schemafehler zurück, der angibt, dass die Quelltabelle der Entität nicht vorhanden ist.

Ursache: Der Tabellenname oder das Schemapräfix im Feld der Entität source stimmt nicht mit dem tatsächlichen Datenbankobjekt überein. SQL Server-Tabellennamen sind standardmäßig nicht case-sensitiv, aber das Schemapräfix (z.B. dbo) muss vorhanden sein, wenn das Standardschema nicht verwendet wird.

Auflösung: Überprüfen Sie den source Wert in dab-config.json. Verwenden Sie einen vollqualifizierten Namen wie dbo.Products, z. B. . Führen Sie SELECT * FROM INFORMATION_SCHEMA.TABLES in der Zieldatenbank aus, um den Tabellennamen und das Schema zu bestätigen.

Firewall- oder Netzwerkfehler beim Herstellen einer Verbindung mit Azure SQL

Symptom: Verbindungen mit der Azure SQL-Datenbank haben eine Zeitüberschreitung oder werden Cannot open server ... requested by the login zurückgegeben.

Ursache: Die Client-IP-Adresse ist von den Azure SQL Server-Firewallregeln nicht zulässig, oder die Azure-Dienstzugriffseinstellung ist deaktiviert.

Auflösung: Navigieren Sie im Azure-Portal zur SQL Server-Ressource, und wählen Sie "Netzwerk" aus. Fügen Sie die Client-IP-Adresse zur Zulassungsliste der Firewall hinzu, oder aktivieren Sie "Azure-Dienste und -Ressourcen zulassen", um auf diesen Server zuzugreifen , wenn DAB in Azure ausgeführt wird. Überprüfen Sie bei der Authentifizierung einer verwalteten Identität, ob diese Identität als Datenbankbenutzer hinzugefügt wurde.CREATE USER [identity-name] FROM EXTERNAL PROVIDER

JSON-Spalten werden nicht automatisch erkannt

Symptom: Eine Spalte mit einem JSON- oder NVARCHAR(MAX)-Typ, der JSON-Daten speichert, wird nicht als strukturiertes Objekt im API-Schema verfügbar gemacht.

Ursache: Der Daten-API-Generator erkennt und ordnet JSON-Spalten in Azure SQL noch nicht automatisch zu. Dies ist eine bekannte Einschränkung, die im GitHub-Problem #444 nachverfolgt wird.

Auflösung: Zurzeit gibt es keine Problemumgehung. Die Spalte wird als einfacher Zeichenfolgenwert verfügbar gemacht. Folgen Sie dem GitHub-Issue, um Updates zu erhalten, wann die native JSON-Spaltenunterstützung hinzugefügt wird.