Řešení potíží s SQL Serverem

Řešení běžných problémů s připojením, ověřováním a konfigurací entit SQL Serveru v Tvůrci rozhraní Data API

Časté dotazy

Co je podpora SQL Serveru v DAB?

Tvůrce rozhraní Data API podporuje Microsoft SQL Server a Azure SQL jako back-endy relační databáze. DAB se připojuje pomocí ovladače Microsoft.Data.SqlClient a převádí požadavky REST a GraphQL na dotazy T-SQL. Podporují se místní instance SQL Serveru i Azure SQL Database.

Jaký formát připojovacího řetězce sql Server používá?

DAB používá připojovací řetězce ve stylu ADO.NET pro SQL Server. Typický řetězec vypadá takto Server=localhost,1433;Database=mydb;User Id=sa;Password=yourpassword;TrustServerCertificate=True;. Nastavte připojovací řetězec v poli data-source.connection-string nebo ho předejte pomocí možnosti --connection-string v dab init.

Jaké režimy ověřování se podporují?

DAB podporuje ověřování SQL (uživatelské jméno a heslo), integrované ověřování Systému Windows a ověřování Microsoft Entra (dříve Azure Active Directory) pro Azure SQL. Pokud chcete použít ověřování Entra, nastavte Authentication=Active Directory Default nebo Active Directory Managed Identity v připojovacím řetězci a ujistěte se, že spravovaná identita nebo instanční objekt mají udělený přístup k databázi.

Běžné problémy

Nejde se připojit ke kontejneru SQL Serveru

Příznak: DAB nefunguje s chybou připojení, například A network-related or instance-specific error occurred.

Způsobit: Port kontejneru SQL Serveru není správně namapovaný, název hostitele je nesprávný nebo kontejner ještě není připravený přijímat připojení.

Rozlišení: Ověřte, že kontejner běží s docker ps. Ověřte mapování portů (výchozí 1433) a použijte localhost,1433 v připojovacím řetězci. Přidejte TrustServerCertificate=True , pokud používáte certifikát podepsaný svým držitelem. Pokud se kontejner právě spustil, počkejte několik sekund, než se SQL Server inicializuje, než se spustí DAB.

Přihlášení uživatele se nezdařilo.

Příznak: Protokoly DAB zobrazují Login failed for user 'sa' nebo podobnou chybu ověřování.

Příčina: Uživatelské jméno, heslo nebo režim ověřování v připojovacím řetězci neodpovídají konfiguraci SQL Serveru. SQL Server může být spuštěný také v režimu ověřování systému Windows.

Rozlišení: Ověřte, že přihlašovací údaje odpovídají těm, které jsou nastavené při vytvoření kontejneru nebo serveru. Pokud používáte kontejner, zkontrolujte proměnnou SA_PASSWORD prostředí. Pokud chcete povolit ověřování SQL v existující instanci, nastavte režim ověřování serveru na SQL Server a režim ověřování systému Windows v aplikaci SQL Server Management Studio v části Zabezpečení vlastností > serveru.

Chyba: Entita nenalezena

Příznak: Požadavky REST nebo GraphQL vrací chybu 404 nebo chybu schématu, která značí, že zdrojová tabulka entity neexistuje.

Příčina: Název tabulky nebo předpona schématu v poli entity source neodpovídá skutečnému databázovému objektu. Názvy tabulek SQL Serveru ve výchozím nastavení nerozlišují malá a velká písmena, ale pokud není používáno výchozí schéma, musí být přítomna předpona schématu (například dbo).

Rozlišení: Zkontrolujte hodnotu v dab-config.json. Použijte plně kvalifikovaný název, například dbo.Products. Spuštěním SELECT * FROM INFORMATION_SCHEMA.TABLES v cílové databázi potvrďte název a schéma tabulky.

Chyba brány firewall nebo sítě při připojování k Azure SQL

Příznak: Připojení ke službě Azure SQL Database vyprší časový limit nebo se vrátí Cannot open server ... requested by the login.

Příčina: IP adresa klienta není povolená pravidly brány firewall serveru Azure SQL server nebo je zakázáno nastavení přístupu ke službám Azure.

Rozlišení: Na webu Azure Portal přejděte k prostředku SQL Serveru a vyberte Sítě. Přidejte IP adresu klienta do seznamu povolených bran firewall nebo povolte Povolit službám a prostředkům Azure přístup k tomuto serveru, pokud DAB běží v Azure. Pro ověřování spravované identity ověřte, že identita byla přidána jako uživatel databáze s CREATE USER [identity-name] FROM EXTERNAL PROVIDER.

Sloupce JSON se nezjistí automaticky.

Příznakem: Sloupec s typem JSON nebo NVARCHAR(MAX), který ukládá data JSON, není vystavený jako strukturovaný objekt ve schématu rozhraní API.

Příčina: Data API builder ještě v Azure SQL automaticky nezjišťuje a nemapuje sloupce JSON. Jedná se o známé omezení sledované v problému GitHubu č. 444.

Rozlišení: V tuto chvíli neexistuje žádné alternativní řešení. Sloupec se zobrazí jako hodnota prostého textu. Sledujte problematiku na GitHubu pro aktualizace o tom, kdy bude přidána nativní podpora sloupců JSON.