Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:Azure SQL Database
Azure SQL Managed Instance
SQL-adatbázis a Fabricben
Hibaüzenetet kap, ha az Azure SQL Database-hez, a Microsoft Fabric SQL Database-hez vagy a felügyelt Azure SQL-példányhoz való kapcsolat meghiúsul.
Mint mindig, alkalmazzon ajánlott eljárásokat és tervezési irányelveket az alkalmazástervezési folyamat során.
Megjegyzés:
Az Azure SQL Connectivity Checkerrel számos csatlakozási hibát észlelhet és kijavíthat.
Gyakori csatlakozási problémák megoldásának lépései
Győződjön meg arról, hogy a TCP/IP engedélyezve van ügyfélprotokollként az alkalmazáskiszolgálón. Azon alkalmazáskiszolgálókon, amelyeken nincs telepítve SQL-eszköz, ellenőrizze, hogy a TCP/IP engedélyezve van-e acliconfg.exe (SQL Server ügyfélhálózati segédprogram) futtatásával.
Ellenőrizze az alkalmazás kapcsolati sztringjét, hogy megfelelően van-e konfigurálva. Győződjön meg például arról, hogy a kapcsolati sztring a megfelelő portot (1433) és a teljes kiszolgálónevet adja meg. Lásd: Kapcsolati adatok lekérése az SQL Server Management Studióval.
Próbálja meg megnövelni a kapcsolat időtúllépési értékét. Javasoljuk, hogy legalább 30 másodperces kapcsolati időtúllépést használjon.
Az alkalmazáskiszolgáló és az Azure SQL Database közötti kapcsolatot tesztelheti a következő módszerek egyikével: Rövid útmutató: Az SSMS használatával csatlakozzon és kérdezzen le az Azure SQL Database-ről vagy a felügyelt Azure SQL-példányról, valamint használhat UDL-fájlt, pinget vagy telnetet. További információkért tekintse meg a csatlakozási problémák hibaelhárítását és a csatlakozási problémák diagnosztikát.
Megjegyzés:
Hibaelhárítási lépésként egy másik ügyfélszámítógépen is tesztelheti a kapcsolatot.
Ajánlott eljárásként a felhőalapú alkalmazásoknak újrapróbálkozásos logikát kell használniuk.
Ha ezek a lépések nem oldják meg a problémát, próbáljon meg további adatokat gyűjteni, majd forduljon az ügyfélszolgálathoz. Ha az alkalmazás felhőszolgáltatás, engedélyezze a naplózást. Ez a lépés a hiba UTC időbélyegét adja vissza. A naplózás engedélyezéséről további információt az Alkalmazások diagnosztikai naplózásának engedélyezése az Azure App Service-ben című témakörben talál. Emellett az SQL Database visszaadja a nyomkövetési azonosítót. A Microsoft ügyfélszolgálata felhasználhatja ezeket az információkat.
Újrapróbálkozás logikája implementálása
Erősen ajánlott, hogy az ügyfélalkalmazások újrapróbálkozási logikát használjanak, hogy újra létre tudjanak alakítani egy kapcsolatot, miután az átmeneti hiba időt ad a saját javítására. Javasoljuk, hogy az első újrapróbálkozás előtt 5 másodpercig halassza el az időt. Az 5 másodpercnél rövidebb késleltetés után történő újrapróbálkozás a felhőszolgáltatás túlterheltségével jár. Minden további újrapróbálkozáshoz a késleltetésnek exponenciálisan, legfeljebb 60 másodpercig kell növekednie.
Az újrapróbálkozások logikájára példákat a következő témakörben talál:
- Csatlakozzon rugalmasan az SQL-hez az ADO.NET segítségével
- Csatlakozzon rugalmasan az SQL-hez PHP-vel
Az átmeneti hibák alkalmazásbeli kezelésével kapcsolatos további információkért tekintse át az átmeneti csatlakozási hibák hibaelhárítását ismertető cikket.
A ADO.NET használó ügyfelek blokkolási időszakának ismertetése elérhető a kapcsolatkészletezésben (ADO.NET).
Átmeneti hibaüzenetek (40197, 40613 és egyebek)
Az Azure-infrastruktúra az SQL Database szolgáltatásban fellépő nagy mértékű terhelés esetén dinamikusan újra tudja konfigurálni a kiszolgálókat. E dinamikus viselkedés miatt megszakadhat az ügyfélprogram és az adatbázis vagy példány közötti kapcsolat. Ezt a hibaállapotot átmeneti hibának nevezzük. Az adatbázis-újrakonfigurálási események bekövetkezhetnek egy tervezett esemény (például egy szoftverfrissítés) vagy egy nem tervezett esemény miatt (például egy folyamat összeomlása vagy terheléselosztás). A legtöbb újrakonfigurálási esemény rövid élettartamú, és legfeljebb 60 másodperc alatt kell befejeződnie. Ezek az események azonban esetenként hosszabb időt is igénybe vehetnek, például ha egy nagy tranzakció hosszú ideig tartó helyreállítást okoz. Az alábbi táblázat felsorolja a különböző átmeneti hibákat, amelyeket az alkalmazások az Azure SQL Database-hez való csatlakozáskor kaphatnak.
Átmeneti hibakódok listája
| Hibakód | Súlyosság | Leírás |
|---|---|---|
926 |
14 | Database 'replicatedmaster' cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server error log for more information.Ez a hiba az SQL-kezelte példány hibanaplójában naplózásra kerülhet egy rövid időre az újrakonfigurálás utolsó szakaszának folyamán, miközben a régi elsődleges példány leállítja a naplóját. A hibaüzenetet tartalmazó egyéb, nem átmeneti forgatókönyveket az MSSQL-hibák dokumentációja ismerteti. |
4060 |
16 | Cannot open database "%.*ls" requested by the login. The login failed. További információért lásd: Hibák 4000-től 4999-ig. |
40197 |
17 | The service has encountered an error processing your request. Please try again. Error code %d.Ez a hiba akkor jelenik meg, ha a szolgáltatás szoftver- vagy hardverfrissítések, hardverhibák vagy más feladatátvételi problémák miatt leáll. A 40197 hibaüzenetbe ágyazott hibakód (%d) további információt nyújt a hiba vagy feladatátvétel típusáról. A hibakódokra néhány példa a 40197-ös hibaüzenetben található: 40020, 40143, 40166 és 40540. Az újracsatlakozás automatikusan összekapcsolja Önt az adatbázis kifogástalan állapotú példányával. Az alkalmazásnak el kell kapnia a 40197-es hibát, naplóznia kell a beágyazott hibakódot (%d) a hibaelhárítási üzenetben, és újra csatlakoznia kell az SQL Database-hez, amíg az erőforrások el nem érhetők, és a kapcsolat újra létre nem jön. További információért tekintse meg az átmeneti hibákkal foglalkozó cikket. |
40501 |
20 | The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d. További információ: • Erőforrás-kezelés. • A rugalmas készletek erőforráskorlátai a DTU vásárlási modell használatával. • vCore-alapú korlátok egyetlen adatbázisok esetén. • virtuális magalapú korlátok rugalmas poolokhoz. • Felügyelt Azure SQL-példány erőforráskorlátai. |
40613 |
17 | Database '%.*ls' on server '%.*ls' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them with the session tracing ID of '%.*ls'.Ez a hiba akkor fordulhat elő, ha már van egy meglévő dedikált rendszergazdai kapcsolat (DAC) az adatbázishoz. További információért tekintse meg az átmeneti hibákkal foglalkozó cikket. |
49918 |
16 | Cannot process request. Not enough resources to process request. The service is currently busy. Please retry the request later.További információ: • Erőforrás-kezelés. • A rugalmas készletek erőforráskorlátai a DTU vásárlási modell használatával. • vCore-alapú korlátok egyetlen adatbázisok esetén. • virtuális magalapú korlátok rugalmas poolokhoz. • Felügyelt Azure SQL-példány erőforráskorlátai. |
49919 |
16 | Cannot process create or update request. Too many create or update operations in progress for subscription "%ld".A szolgáltatás jelenleg foglalt, mert az előfizetésed vagy a kiszolgálód több létrehozási vagy frissítési kérelem feldolgozásán dolgozik. A kérések jelenleg fel vannak függesztve az erőforrás-optimalizálás miatt. Lekérdezni a sys.dm_operation_status-t a függőben lévő műveletekért. Várjon, amíg a függőben lévő létrehozási vagy frissítési kérelmek befejeződnek, vagy törölje az egyik függőben lévő kérést, és később próbálkozzon újra a kéréssel. Ha úgy tűnik, hogy a műveletek elakadtak, várjon, amíg más folyamatban lévő műveletek befejeződnek, vagy ha lehetséges, szakítsa meg őket. Előfordulhat például, hogy a létrehozott adatbázis vagy replika törlésével megszakíthatja az adatbázis vagy a georeplika létrehozását. Ha nem sikerül megszakítani egy látszólag elakadt műveletet, nyisson meg egy támogatási jegyet a Microsoftnál. |
49920 |
16 | Cannot process request. Too many operations in progress for subscription "%ld".A szolgáltatás foglalt az előfizetéshez tartozó több kérés feldolgozásával. A kérések jelenleg fel vannak függesztve az erőforrás-optimalizálás miatt. A művelet állapotának lekérdezése sys.dm_operation_status . Várjon, amíg a függőben lévő kérelmek befejeződnek, vagy törölje valamelyik függőben lévő kérését, és később próbálkozzon újra. Ha úgy tűnik, hogy a műveletek elakadtak, várjon, amíg más folyamatban lévő műveletek befejeződnek, vagy ha lehetséges, szakítsa meg őket. Előfordulhat például, hogy a létrehozott adatbázis vagy replika törlésével megszakíthatja az adatbázis vagy a georeplika létrehozását. Ha nem sikerül megszakítani egy látszólag elakadt műveletet, nyisson meg egy támogatási jegyet a Microsoftnál. |
4221 |
16 | Login to read-secondary failed due to long wait on 'HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING'.A replika nem érhető el a bejelentkezéshez, mert a sorverziók hiányoznak a replika újrafeldolgozásakor repülés közben végrehajtott tranzakciókhoz. A probléma az elsődleges replika aktív tranzakcióinak visszaállításával vagy véglegesítésével oldható meg. Ennek a feltételnek az előfordulásai minimálisra csökkenthetők, ha elkerüljük a hosszú írási tranzakciókat az elsődleges rendszeren. |
615 |
21 | Could not find database ID %d, name '%.*ls'Ez azt jelenti, hogy a memóriabeli gyorsítótár nincs szinkronizálva az SQL Server-példánysal, és a keresések elavult adatbázis-azonosítót keresnek. Az SQL-bejelentkezések memórián belüli gyorsítótár használatával kérik le az adatbázis nevét az azonosítóleképezéshez. A gyorsítótárnak szinkronban kell lennie a háttéradatbázissal, és frissítenie kell az adatbázist az SQL Server-példányhoz való csatoláskor és leválasztásakor. Ez a hiba akkor jelenik meg, ha a leválasztási munkafolyamat nem tudja időben megtisztítani a memóriában lévő gyorsítótárat, és az adatbázis-pontra való későbbi keresések elavult adatbázis-azonosítóra mutatnak. Próbáljon meg újra csatlakozni az SQL Database-hez, amíg az erőforrás el nem érhető, és a kapcsolat újra létre nem jön. További információért tekintse meg az átmeneti hibákkal foglalkozó cikket. |
Az átmeneti kapcsolódási problémák megoldásának lépései
- Tekintse meg a Microsoft Azure szolgáltatás irányítópultján az alkalmazás jelentésének időtartama alatt bekövetkezett ismert kimaradásokat.
- A felhőszolgáltatáshoz, például az Azure SQL Database-hez csatlakozó alkalmazásoknak rendszeres újrakonfigurálási eseményekre kell számítaniuk, és újrapróbálkozási logikát kell implementálniuk a hibák kezeléséhez ahelyett, hogy az alkalmazáshibákat a felhasználók számára észlelik.
- Ahogy egy adatbázis megközelíti az erőforráskorlátokat, átmeneti kapcsolati problémának tűnhet. Lásd: Erőforráskorlátok.
- Ha a csatlakozási problémák továbbra is fennállnak, vagy ha az alkalmazás által tapasztalt hiba időtartama meghaladja a 60 másodpercet, vagy ha egy adott napon több alkalommal is előfordul a hiba, küldjön egy Azure-támogatás kérelmet az Azure támogatási webhelyén a Támogatás kérése gombra kattintva.
Hálózattal kapcsolatos vagy példányspecifikus hiba történt a kiszolgálóval való kapcsolat létrehozásakor
A probléma akkor fordul elő, ha az alkalmazás nem tud csatlakozni a kiszolgálóhoz.
A probléma megoldásához próbálja ki a lépéseket (a bemutatott sorrendben) a gyakori csatlakozási problémák megoldása lépései szakaszban.
A kiszolgáló/példány nem található vagy nem volt elérhető (26., 40., 10053. hiba)
26-os hiba: Hiba a kiszolgáló megadott helyének meghatározásakor
System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.(provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)
40-s hiba: Nem sikerült kapcsolatot nyitni a kiszolgálóval
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
10053-es hiba: Átviteli szintű hiba történt a kiszolgálótól kapott eredmények fogadásakor
10053: A transport-level error has occurred when receiving results from the server. (Provider: TCP Provider, error: 0 - An established connection was aborted by the software in your host machine)
Ezek a problémák akkor fordulnak elő, ha az alkalmazás nem tud csatlakozni a kiszolgálóhoz.
A problémák megoldásához próbálkozzon a lépésekkel (a bemutatott sorrendben) az A gyakori csatlakozási problémák megoldása című szakaszban.
Tűzfalproblémák miatt nem lehet csatlakozni a kiszolgálóhoz
40615-ös hiba: Nem lehet csatlakozni a kiszolgálónévhez <>
A probléma megoldásához konfigurálja az SQL Database tűzfalbeállítását az Azure Portalon keresztül.
5. hiba: Nem lehet csatlakozni a kiszolgálónévhez <>
A probléma megoldásához győződjön meg arról, hogy az 1433-as port nyitva van az ügyfél és az internet közötti összes tűzfal kimenő kapcsolataihoz.
Nem sikerült bejelentkezni a kiszolgálóra (18456-os, 40531-ös hiba)
Nem sikerült bejelentkezni a felhasználó '< User name >' számára
Login failed for user '<User name>'.This session has been assigned a tracing ID of '<Tracing ID>'. Provide this tracing ID to customer support when you need assistance. (Microsoft SQL Server, Error: 18456)
A probléma megoldásához forduljon a szolgáltatás rendszergazdájához, és adjon meg egy érvényes felhasználónevet és jelszót.
A szolgáltatásadminisztrátor általában a következő lépésekkel veheti fel a bejelentkezési hitelesítő adatokat:
Jelentkezzen be a kiszolgálóra az SQL Server Management Studio (SSMS) használatával.
Annak ellenőrzéséhez, hogy a bejelentkezési név le van-e tiltva, futtassa a következő SQL-lekérdezést az
masteradatbázisban:SELECT name, is_disabled FROM sys.sql_logins;Ha a megfelelő név le van tiltva, az alábbi utasítással engedélyezheti azt:
ALTER LOGIN <User name> ENABLE;Ha az SQL bejelentkezési felhasználóneve nem létezik, szerkessze és futtassa a következő SQL-lekérdezést egy új SQL-bejelentkezés létrehozásához:
CREATE LOGIN <SQL_login_name, sysname, login_name> WITH PASSWORD = '<password, sysname, Change_Password>'; GOAz SSMS Object Explorerben bontsa ki az Adatbázisok elemet.
Válassza ki azt az adatbázist, amelyhez engedélyezni szeretné a felhasználót.
Kattintson a jobb gombbal a Biztonság elemre, majd válassza az Új, Felhasználó lehetőséget.
A létrehozott, helyőrzőkkel rendelkező szkriptben kövesse az SSMS-sablon paramétereinek cseréjéhez és végrehajtásához szükséges lépéseket, például:
CREATE USER [<user_name, sysname, user_name>] FOR LOGIN [<login_name, sysname, login_name>] WITH DEFAULT_SCHEMA = [<default_schema, sysname, dbo>]; GO -- Add user to the database owner role EXEC sp_addrolemember N'db_owner', N'<user_name, sysname, user_name>'; GOAdott felhasználókat adott adatbázis-szerepkörökhöz is hozzárendelhet
sp_addrolemember.Megjegyzés:
Az Azure SQL Database-ben fontolja meg az adatbázis-szerepkör-tagság kezelésére szolgáló újabb ALTER ROLE szintaxist.
További információ: Adatbázis-hozzáférés engedélyezése.
Kapcsolati időkorlát lejárati hibák
System.Data.SqlClient.SqlException (0x80131904): Lejárt a kapcsolat időtúllépése
System.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=3; handshake=29995;
System.Data.SqlClient.SqlException (0x80131904): Időtúllépés történt
System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
System.Data.Entity.Core.EntityException: A mögöttes szolgáltató nem tudott megnyitni
System.Data.Entity.Core.EntityException: The underlying provider failed on Open. -> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. -> System.ComponentModel.Win32Exception: The wait operation timed out
Nem lehet csatlakozni a kiszolgáló nevéhez <>
Cannot connect to <server name>.ADDITIONAL INFORMATION:Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=231; handshake=983; [Login] initialization=0; authentication=0; [Post-Login] complete=13000; (Microsoft SQL Server, Error: -2) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476 The wait operation timed out
Ezek a kivételek kapcsolati vagy lekérdezési problémák miatt is előfordulhatnak. Annak ellenőrzéséhez, hogy a csatlakozási problémák okozták-e ezt a hibát, olvassa el annak megerősítését, hogy a hibát csatlakozási probléma okozta-e.
A kapcsolat időtúllépése azért fordul elő, mert az alkalmazás nem tud csatlakozni a kiszolgálóhoz. A probléma megoldásához próbálja ki a lépéseket (a bemutatott sorrendben) a gyakori csatlakozási problémák megoldása lépései szakaszban.
Hálózati kapcsolat megszakadási hibái
Az SQL-ügyfélkódtárak a TCP hálózati protokoll használatával csatlakoznak az Azure SQL Database-hez és a felügyelt Azure SQL-példányhoz. Az ügyfélkódtár egy TCP-szolgáltató nevű alacsonyabb szintű összetevőt használ a TCP-kapcsolatok kezeléséhez. Amikor a TCP-szolgáltató azt észleli, hogy egy távoli gazdagép váratlanul megszakít egy meglévő TCP-kapcsolatot, az ügyfélkódtár hibát jelez. Mivel a hiba ügyfélhiba, és nem SQL Server-hiba, nem szerepel benne SQL-hibaszám. Ehelyett a hibaszám 0, és a TCP-szolgáltatótól érkező hibaüzenetet használja a rendszer.
A hálózati kapcsolat megszüntetésével kapcsolatos hibák például a következők:
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.) An existing connection was forcibly closed by the remote host
A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
The client was unable to establish a connection because of an error during connection initialization process before login. Possible causes include the following: the client tried to connect to an unsupported version of SQL Server; the server was too busy to accept new connections; or there was a resource limitation (insufficient memory or maximum allowed connections) on the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
A connection was successfully established with the server, but then an error occurred during the login process. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
Kapcsolatvégzítési hibák léphetnek fel, mert az adatbázis vagy a rugalmas készlet átmenetileg nem érhető el. Ezek az adatbázis-kiszolgáló és az ügyfélalkalmazás közötti hálózati infrastruktúra különböző problémái miatt is előfordulnak, beleértve a tűzfalakat, a hálózati berendezéseket stb. Ezek a problémák átmenetiek vagy állandóak lehetnek. Általános útmutatásként az alkalmazásoknak rögzített számú újrapróbálkozási kísérletet kell használniuk ezekhez a hibákhoz, mielőtt állandó hibákra tekintenek.
Erőforrás-szabályozási hibák
Az Azure SQL Database erőforrás-szabályozási implementációt használ a Resource Governor alapján az erőforráskorlátok kikényszerítéséhez. További információ az Azure SQL Database erőforrás-kezeléséről.
A leggyakoribb erőforrás-szabályozási hibák először a részletekkel, majd az erőforrás-szabályozási hibaüzenetek táblázatával jelennek meg.
10928- és 10936-os hiba: Erőforrás-azonosító: 1. Az [adatbázis vagy rugalmas készlet] kérelemkorlátja %d és ezt elérte.
Ha eléri az adatbázisszintű korlátot, a jelen esetben a részletes hibaüzenet a következőt olvassa fel: Resource ID : 1. The request limit for the database is %d and has been reached. See 'http://go.microsoft.com/fwlink/?LinkId=267637' for assistance.
Ha eléri a rugalmas készletkorlátot, a jelen esetben a részletes hibaüzenet a következőt olvassa fel: Resource ID : 1. The request limit for the elastic pool is %d and has been reached. See 'http://go.microsoft.com/fwlink/?LinkId=267637' for assistance. A rugalmas készletkorlátok magasabbak az adatbázis korlátainál. További információ: Erőforrás-kezelés az Azure SQL Database-ben. Esetleges korlátok merülhetnek fel, amikor a készlet több adatbázisa egyszerre használ egy erőforrást (például munkavállalókat).
Ez a hibaüzenet azt jelzi, hogy elérte az adatbázis vagy a rugalmas készlet feldolgozói korlátját. Az adatbázis vagy rugalmas készlet szolgáltatási célkitűzésének maximális egyidejű feldolgozói értéke jelen lesz a helyőrző %dhelyett.
Megjegyzés:
Az Azure SQL Database kezdeti ajánlata csak egyszálas lekérdezéseket támogatott. Abban az időben a kérelmek száma mindig megegyezett a munkavállalók számával. Az Azure SQL Database 10928-ra és 10936-ra vonatkozó hibaüzenetei a következő szöveget tartalmazzák: "A kérelemkorlát [...] N, és ezt elérték visszafelé kompatibilitási célokból." Az elért korlát valójában a munkavállalók száma. Ha a maximális párhuzamossági fok (MAXDOP) értéke nulla vagy egynél nagyobb, a feldolgozók száma sokkal magasabb lehet a kérelmek számánál, és a korlát sokkal hamarabb érhető el, mint amikor a MAXDOP értéke egy.
További információ a munkamenetekről, a dolgozókról és a kérésekről.
Csatlakozás dedikált rendszergazdai kapcsolattal (DAC) szükség esetén
Ha élő incidens van folyamatban a feldolgozói korlát elérésekor, az SQL Server Management Studio (SSMS) használatával történő csatlakozáskor 10928-os hiba jelenhet meg. Egy munkamenet akkor is csatlakozhat az adatbázis-rendszergazdák diagnosztikai kapcsolatának (DAC) használatával, ha elérte a maximális feldolgozói küszöbértéket.
Kapcsolat létesítése a DAC-tal az SSMS-ből:
- A menüben válassza a Fájl új > adatbázismotor lekérdezése > lehetőséget
- A Kapcsolat párbeszédpanelen a Kiszolgálónév mezőbe írja be
admin:<fully_qualified_server_name>(például:admin:servername.database.windows.net). - Beállítások >> kiválasztása
- A Kapcsolat tulajdonságai lap kiválasztása
- A Csatlakozás az adatbázishoz mezőbe írja be az adatbázis nevét
- Válassza a Csatlakozás lehetőséget.
Ha 40613-at kap, az azt jelezheti, Database '%.*ls' on server '%.*ls' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them the session tracing ID of '%.*ls'hogy egy másik munkamenet már csatlakoztatva van a DAC-hoz. Egyszerre csak egy munkamenet kapcsolódhat a DAC-hoz egyetlen adatbázishoz vagy rugalmas csomaghoz.
Ha a Csatlakozás kiválasztása után a "Nem sikerült csatlakozni a kiszolgálóhoz" hibaüzenet jelenik meg, előfordulhat, hogy a DAC-munkamenet sikeresen létrejött, ha az SSMS-verziók 18.9 előtti verzióját használja. Az SSMS korai verziói megpróbálták biztosítani az Intellisense-t a DAC-hez való kapcsolatokhoz. Ez nem sikerült, mivel a DAC csak egyetlen feldolgozót támogat, az Intellisense pedig külön feldolgozót igényel.
Az SSMS-ben nem használhat DAC-kapcsolatot az Object Explorerrel.
A max_worker_percent használatának áttekintése
Ha 14 napig szeretné megtalálni az adatbázis erőforrás-fogyasztási statisztikáit, kérdezze le a sys.resource_stats rendszerkatalógus nézetét. Az max_worker_percent oszlop mutatja, hogy a munkások hány százalékát használják az adatbázis megengedett határához képest. Csatlakozzon a masterlogikai kiszolgálón lévő adatbázishoz a lekérdezéshez sys.resource_stats.
SELECT start_time, end_time, database_name, sku, avg_cpu_percent, max_worker_percent, max_session_percent
FROM sys.resource_stats;
Az erőforrás-felhasználás statisztikáit az sys.dm_db_resource_stats dinamikus felügyeleti nézetből is lekérdezheti az elmúlt óráról. Csatlakozzon közvetlenül az adatbázishoz a lekérdezéshez sys.dm_db_resource_stats.
SELECT end_time, avg_cpu_percent, max_worker_percent, max_session_percent
FROM sys.dm_db_resource_stats;
A munkások használatának csökkentése, ha lehetséges
A blokkolási láncok hirtelen megugrást okozhatnak az adatbázis dolgozóinak számában. Az egyidejű lekérdezések nagy mennyisége nagy számú feldolgozót okozhat. A maximális párhuzamossági fok (MAXDOP) vagy a MAXDOP nullára állítása növelheti az aktív dolgozók számát.
Az incidens kezelése, amikor nincs elegendő munkavállaló, a következő lépések szerint:
Vizsgálja meg, hogy a blokkolás történik-e, vagy nagy mennyiségű egyidejű feldolgozót tud-e azonosítani. Futtassa a következő lekérdezést az aktuális kérések vizsgálatához, és ellenőrizze, hogy van-e blokkolás, amikor az adatbázis 10928-as hibát ad vissza. Előfordulhat, hogy a lekérdezés végrehajtásához csatlakoznia kell a dedikált rendszergazdai kapcsolattal (DAC ).
SELECT r.session_id, r.request_id, r.blocking_session_id, r.start_time, r.status, r.command, DB_NAME(r.database_id) AS database_name, (SELECT COUNT(*) FROM sys.dm_os_tasks AS t WHERE t.session_id=r.session_id and t.request_id=r.request_id) AS worker_count, i.parameters, i.event_info AS input_buffer, r.last_wait_type, r.open_transaction_count, r.total_elapsed_time, r.cpu_time, r.logical_reads, r.writes, s.login_time, s.login_name, s.program_name, s.host_name FROM sys.dm_exec_requests as r JOIN sys.dm_exec_sessions as s on r.session_id=s.session_id OUTER APPLY sys.dm_exec_input_buffer (r.session_id,r.request_id) AS i WHERE s.is_user_process=1; GOKeresse azokat a sorokat, amelyek tartalmazzák a
blocking_session_id, hogy azonosítsa a letiltott munkameneteket. Keresse meg mindegyiketblocking_session_ida listában, és állapítsa meg, hogy az adott munkamenet is le van-e tiltva. Ablocking_session_idéssession_idértékek követése végül elvezet a blokkoló vezetőhöz: egy olyan munkamenethez, amely maga nincs blokkolva, de másokat blokkol. Hangolja a fejblokkoló lekérdezését.Jótanács
A hosszú ideig futó vagy letiltott lekérdezések hibaelhárításával kapcsolatos részletesebb információkért lásd a blokkolási problémák ismertetése és megoldása című témakört.
Az egyidejű munkavállalók nagy mennyiségének azonosításához tekintse át az összes kérelmet és az egyes kérések
worker_countoszlopát.Worker_counta mintavétel időpontjában fennálló munkások száma, és a kérés végrehajtása során változhat. A lekérdezések finomhangolása az erőforrás-kihasználtság csökkentése érdekében, ha a dolgozói kapacitás növekedése az optimális párhuzamossági fokon futó egyidejű lekérdezések miatt következik be. További információ: Lekérdezés finomhangolása/tippelés.
Értékelje ki az adatbázis maximális párhuzamossági (MAXDOP) beállítását.
Feldolgozói korlátok növelése
Ha az adatbázis vagy a rugalmas készlet a blokkolás kezelése, a lekérdezések optimalizálása és a MAXDOP-beállítás érvényesítése ellenére következetesen eléri a feldolgozói korlátot, fontolja meg az adatbázis vagy a rugalmas készlet skálázását a feldolgozói korlát növelése érdekében.
Erőforráskorlátok keresése az Azure SQL Database szolgáltatásszint és számítási méret szerint:
- vCore vásárlási modellt használó egyedi adatbázisok erőforrás-korlátai
- Rugalmas készletek erőforráskorlátai a vCore alapú vásárlási modell alkalmazásával
- DTU vásárlási modellt használó önálló adatbázisok erőforráskorlátai
- rugalmas készletek erőforráskorlátai a DTU vásárlási modellel
További információ a dolgozók Azure SQL Database-erőforrás-szabályozásáról.
10929-s hiba: Erőforrás-azonosító: 1
10929: Resource ID: 1. The %s minimum guarantee is %d, maximum limit is %d and the current usage for the database is %d. However, the server is currently too busy to support requests greater than %d for this database. See http://go.microsoft.com/fwlink/?LinkId=267637 for assistance. Otherwise, please try again later.
40501-ös hiba: A szolgáltatás jelenleg foglalt
40501: The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d.
A 40501-s hiba egy motorszabályozási hiba, amely azt jelzi, hogy az erőforráskorlátok túllépése folyamatban van.
További információ az erőforráskorlátokról: Erőforrás-kezelés az Azure SQL Database-ben.
40544-es hiba: Az adatbázis elérte a méretkvótát
40544: The database has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions. Incident ID: <ID>. Code: <code>.
Ez a hiba akkor fordul elő, ha az adatbázis elérte a méretkvótát.
Az alábbi lépések segíthetnek a probléma megoldásában, vagy további lehetőségeket biztosíthatnak:
Ellenőrizze az adatbázis aktuális méretét az Azure Portal irányítópultján.
Megjegyzés:
Annak megállapításához, hogy mely táblák használják a legtöbb helyet, és ezért lehetségesek a törlésre, futtassa a következő SQL-lekérdezést:
SELECT o.name, SUM(p.row_count) AS 'Row Count', SUM(p.reserved_page_count) * 8.0 / 1024 AS 'Table Size (MB)' FROM sys.objects o JOIN sys.dm_db_partition_stats p on p.object_id = o.object_id GROUP BY o.name ORDER BY [Table Size (MB)] DESC; GOHa az aktuális méret nem haladja meg a kiadáshoz támogatott maximális méretet, az ALTER DATABASE használatával növelheti a MAXSIZE beállítást.
Ha az adatbázis már túllépte a kiadás maximálisan támogatott méretét, próbálkozzon az alábbi lépésekkel:
- Normál adatbázis-tisztítási tevékenységek végrehajtása. Például tisztítsa meg a nemkívánatos adatokat a truncate/delete használatával, vagy mozgassa ki az adatokat az SQL Server Integration Services (SSIS) vagy a bulk copy program (bcp) segédprogrammal.
- Particionálhat vagy törölhet adatokat, elvethet indexeket, vagy megtekintheti a dokumentációt a lehetséges megoldásokért.
- Az adatbázis-skálázásról az önálló adatbázis-erőforrások skálázása és a rugalmas készleterőforrások méretezése című témakörben olvashat.
40549-ös hiba: A munkamenet le van állítva, mert hosszú ideig futó tranzakcióval rendelkezik
40549: Session is terminated because you have a long-running transaction. Try shortening your transaction.
Ha ezt a hibát többször is tapasztalja, próbálja meg megoldani a problémát az alábbi lépések végrehajtásával:
Futtassa a következő lekérdezést azoknak a nyitott munkameneteknek a megtekintéséhez, amelyeknek magas az értéke a(z)
duration_msoszlopban.SELECT r.start_time, DATEDIFF(ms,start_time, SYSDATETIME()) as duration_ms, r.session_id, r.request_id, r.blocking_session_id, r.status, r.command, DB_NAME(r.database_id) AS database_name, i.parameters, i.event_info AS input_buffer, r.last_wait_type, r.open_transaction_count, r.total_elapsed_time, r.cpu_time, r.logical_reads, r.writes, s.login_time, s.login_name, s.program_name, s.host_name FROM sys.dm_exec_requests as r JOIN sys.dm_exec_sessions as s on r.session_id=s.session_id OUTER APPLY sys.dm_exec_input_buffer (r.session_id,r.request_id) AS i WHERE s.is_user_process=1 ORDER BY start_time ASC; GOFigyelmen kívül hagyhatja azokat a sorokat, ahol a
input_bufferoszlop lekérdezést tartalmaz asys.fn_MSxe_read_event_streamalapján: ezek a kérések a kiterjesztett esemény munkamenetekhez kapcsolódnak.Tekintse át az
blocking_session_idoszlopot, és ellenőrizze, hogy a blokkolás hozzájárul-e a hosszú ideig futó tranzakciókhoz.Megjegyzés:
Az Azure SQL Database-ben történő blokkolás hibaelhárításával kapcsolatos további információkért tekintse meg és oldja meg a blokkolási problémákat.
Fontolja meg a lekérdezések kötegelését. A kötegelésről további információért lásd: Az Azure SQL Database és az Azure SQL Managed Instance alkalmazások teljesítményének javítása kötegelt feldolgozással.
40551-ös hiba: A munkamenet a tempdb túlzott használata miatt megszakadt
40551: The session has been terminated because of excessive TEMPDB usage. Try modifying your query to reduce the temporary table space usage.
A probléma megoldásához hajtsa végre az alábbi lépéseket:
- Módosítsa a lekérdezéseket az ideiglenes táblaterület-használat csökkentése érdekében.
- Ha már nincs rájuk szükség, helyezzen el ideiglenes objektumokat.
- Táblák törlése vagy a nem használt táblák eltávolítása.
40552-ös hiba: A munkamenet a tranzakciónapló túlzott kihasználtsága miatt megszakadt
40552: The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.
A probléma megoldásához próbálkozzon a következő módszerekkel:
- A probléma beszúrási, frissítési vagy törlési műveletek miatt fordulhat elő. Próbálja meg csökkenteni az azonnal végrehajtott sorok számát kötegelés vagy több kisebb tranzakcióra való felosztás implementálásával.
- A probléma az index újraépítési műveletei miatt fordulhat elő. A probléma megoldásához győződjön meg arról, hogy a táblában érintett sorok száma * (a bájtokban frissített mező átlagos mérete + 80) < 2 gigabájt (GB).
- Index-újraépítés esetén a frissített mező átlagos méretét az átlagos indexméretnek kell helyettesítenie.
- További információ: Az Azure SQL Database teljes tranzakciónaplójának hibaelhárítása és a felügyelt Azure SQL-példány teljes tranzakciónaplójának hibaelhárítása.
40553-os hiba: A munkamenet a túlzott memóriahasználat miatt megszakadt
40553: The session has been terminated because of excessive memory usage. Try modifying your query to process fewer rows.
A probléma megoldásához próbálja meg optimalizálni a lekérdezést.
Részletes hibaelhárítási eljárásért lásd: A lekérdezésem jól fut a felhőben?
További információ az egyéb memóriahiányos hibákról és a példa lekérdezésekről: Az Azure SQL Database memóriahiányos hibáinak elhárítása.
Erőforrás-szabályozási hibaüzenetek táblázata
| Hibakód | Súlyosság | Leírás |
|---|---|---|
10928 |
20 | Resource ID: %d. The %s limit for the database is %d and has been reached. See 'http://go.microsoft.com/fwlink/?LinkId=267637' for assistance.Az erőforrás-azonosító azt az erőforrást jelzi, amely elérte a korlátot. Ha az erőforrás-azonosító = 1, az azt jelzi, hogy elérte a munkás korlátot. További információt talál a 10928-as hiba esetén: Erőforrás-azonosító: 1. Az adatbázis kérelmi korlátja %d , és elérte a korlátját. Ha az erőforrás-azonosító = 2, az azt jelzi, hogy elérte a munkamenet-korlátot. További információ az erőforráskorlátokról: • Erőforrás-kezelés az Azure SQL Database-ben. • A DTU vásárlási modell erőforráskorlátai. • vCore-alapú korlátok egyetlen adatbázisok esetén. • Felügyelt Azure SQL-példány erőforráskorlátai. |
10936 |
20 | Resource ID: %d. The %s limit for the elastic pool is %d and has been reached. See 'http://go.microsoft.com/fwlink/?LinkId=267637' for assistance.Az erőforrás-azonosító azt az erőforrást jelzi, amely elérte a korlátot. Ha az erőforrás-azonosító = 1, az azt jelzi, hogy elérte a munkás korlátot. További információ : 10936-os hiba: Erőforrás-azonosító: 1. A rugalmas készlet kérelemkorlátja %d , és elérte. Ha az erőforrás-azonosító = 2, az azt jelzi, hogy elérte a munkamenetkorlátot. További információ az erőforráskorlátokról: • Erőforrás-kezelés az Azure SQL Database-ben. • A rugalmas készletek erőforráskorlátai a DTU vásárlási modell használatával. • virtuális magalapú korlátok rugalmas poolokhoz. • Felügyelt Azure SQL-példány erőforráskorlátai. |
10929 |
20 | Resource ID: %d. The %s minimum guarantee is %d, maximum limit is %d, and the current usage for the database is %d. However, the server is currently too busy to support requests greater than %d for this database.Az erőforrás-azonosító azt az erőforrást jelzi, amely elérte a korlátot. Munkaszálak esetében az erőforrás-azonosító = 1. Munkamenetek esetén az erőforrás-azonosító = 2. További információ: • Erőforrás-kezelés az Azure SQL Database-ben. • A rugalmas készletek erőforráskorlátai a DTU vásárlási modell használatával. • vCore-alapú korlátok egyetlen adatbázisok esetén. • virtuális magalapú korlátok rugalmas poolokhoz. • Felügyelt Azure SQL-példány erőforráskorlátai. Ellenkező esetben próbálkozzon újra később. |
40544 |
20 | The database has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.Az adatbázis-skálázásról az önálló adatbázis-erőforrások skálázása és a rugalmas készleterőforrások méretezése című témakörben olvashat. |
40549 |
16 | Session is terminated because you have a long-running transaction. Try shortening your transaction.A kötegelésről további információért lásd: Az Azure SQL Database és az Azure SQL Managed Instance alkalmazások teljesítményének javítása kötegelt feldolgozással. |
40550 |
16 | The session has been terminated because it has acquired too many locks. Try reading or modifying fewer rows in a single transaction.A kötegelésről további információért lásd: Az Azure SQL Database és az Azure SQL Managed Instance alkalmazások teljesítményének javítása kötegelt feldolgozással. |
40551 |
16 | The session has been terminated because of excessive tempdb usage. Try modifying your query to reduce the temporary table space usage.Ha ideiglenes objektumokat használ, őrizz meg helyet az adatbázisban az tempdb ideiglenes objektumok elvetésével, miután már nincs rájuk szükség a munkamenetben. Az SQL Database korlátairól tempdb további információt az SQL Database Tempdb-adatbázisában talál. |
40552 |
16 | The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.A kötegelésről további információért lásd: Az Azure SQL Database és az Azure SQL Managed Instance alkalmazások teljesítményének javítása kötegelt feldolgozással. Ha tömeges beszúrásokat hajt végre az bcp.exe segédprogram vagy a System.Data.SqlClient.SqlBulkCopy osztály használatával, próbálja meg az -b batchsize vagy BatchSize lehetőségekkel korlátozni a kiszolgálóra másolt sorok számát az egyes tranzakciók során. Ha az utasítással ALTER INDEX újraépít egy indexet, próbálja meg a REBUILD WITH ONLINE = ON opciót használni. A virtuálismag-vásárlási modell tranzakciónapló-méretével kapcsolatos információkért lásd: • vCore-alapú korlátok egyetlen adatbázisok esetén. • virtuális magalapú korlátok rugalmas poolokhoz. • Felügyelt Azure SQL-példány erőforráskorlátai. |
40553 |
16 | The session has been terminated because of excessive memory usage. Try modifying your query to process fewer rows.A Transact-SQL kódban lévő műveletek számának ORDER BY és GROUP BY műveleteinek csökkentése csökkenti a lekérdezés memóriaigényét. Az adatbázis-skálázásról az önálló adatbázis-erőforrások skálázása és a rugalmas készleterőforrások méretezése című témakörben olvashat. A memóriakihasználtságokkal és a minta lekérdezésekkel kapcsolatos további információkért tekintse meg az Azure SQL Database memórián kívüli hibáinak elhárítása című témakört. |
Rugalmas készlet hibái
A következő hibák a rugalmas készletek létrehozásával és használatával kapcsolatosak:
| Hibakód | Súlyosság | Leírás | Helyesbítő intézkedés |
|---|---|---|---|
1132 |
17 | The elastic pool has reached its storage limit. The storage usage for the elastic pool cannot exceed (%d) MBs.Amikor megpróbál adatokat írni az adatbázisba, a rugalmas készlet tárolási korlátja elérte a maximumot. Az erőforráskorlátokkal kapcsolatos információkért lásd: • A rugalmas készletek erőforráskorlátai a DTU vásárlási modell használatával. • virtuális magalapú korlátok rugalmas poolokhoz. |
Ha lehetséges, fontolja meg a rugalmas készlet DTU-jának növelését és/vagy a rugalmas készlethez való hozzáadását annak érdekében, hogy növelje a tárterületkorlátot, csökkentse az egyes adatbázisok által a rugalmas készleten belül használt tárterületet, vagy távolítsa el az adatbázisokat a rugalmas készletből. A rugalmas készlet skálázásával kapcsolatban lásd: Rugalmas készlet erőforrásainak méretezése. A nem használt terület adatbázisokból való eltávolításáról további információt az Azure SQL Database-ben található adatbázisok fájlterületének kezelése című témakörben talál. |
10929 |
16 | The %s minimum guarantee is %d, maximum limit is %d, and the current usage for the database is %d. However, the server is currently too busy to support requests greater than %d for this database.Az erőforráskorlátokkal kapcsolatos információkért lásd: • A rugalmas készletek DTU-erőforráskorlátai. • virtuális magalapú korlátok rugalmas poolokhoz. Ellenkező esetben próbálkozzon újra később. DTU/vCore min adatbázisonként; DTU/vCore max adatbázisonként. A rugalmas készleten belüli összes adatbázis egyidejű feldolgozóinak száma megpróbálta meghaladni a készletkorlátot. |
Fontolja meg a rugalmas készlet DTU-jainak vagy virtuális magjainak növelését, ha lehetséges, a feldolgozói korlát növelése érdekében, vagy távolítsa el az adatbázisokat a rugalmas készletből. |
40844 |
16 | Database '%ls' on Server '%ls' is a '%ls' edition database in an elastic pool and cannot have a continuous copy relationship. |
Nincs adat. |
40857 |
16 | Elastic pool not found for server: '%ls', elastic pool name: '%ls'. Specified elastic pool does not exist in the specified server. |
Adjon meg érvényes rugalmas készletnevet. |
40858 |
16 | Elastic pool '%ls' already exists in server: '%ls'. Specified elastic pool already exists in the specified server. |
Adjon meg új rugalmas készletnevet. |
40859 |
16 | Elastic pool does not support service tier '%ls'. Specified service tier is not supported for elastic pool provisioning. |
Adja meg a megfelelő kiadást, vagy hagyja üresen a szolgáltatási szintet az alapértelmezett szolgáltatási szint használatához. |
40860 |
16 | Elastic pool '%ls' and service objective '%ls' combination is invalid. Elastic pool and service tier can be specified together only if resource type is specified as 'ElasticPool'. |
Adja meg a rugalmas készlet és a szolgáltatási szint megfelelő kombinációját. |
40861 |
16 | The database edition '%.*ls' cannot be different than the elastic pool service tier which is '%.*ls'. The database edition is different than the elastic pool service tier. |
Ne adjon meg olyan adatbázis-kiadást, amely eltér a rugalmas készlet szolgáltatási szintjétől. Az adatbázis kiadását nem kell megadni. |
40862 |
16 | Elastic pool name must be specified if the elastic pool service objective is specified. Elastic pool service objective does not uniquely identify an elastic pool. |
Adja meg a rugalmas készlet nevét, ha a rugalmas készletszolgáltatás-célkitűzést használja. |
40864 |
16 | The DTUs for the elastic pool must be at least (%d) DTUs for service tier '%.*ls'. Attempting to set the DTUs for the elastic pool below the minimum limit. |
Próbálkozzon újra a rugalmas készlet DTU-jának legalább a minimális korlátra állításával. |
40865 |
16 | The DTUs for the elastic pool cannot exceed (%d) DTUs for service tier '%.*ls'. Attempting to set the DTUs for the elastic pool above the maximum limit. |
Próbálkozzon újra a rugalmas készlet DTU-jának a maximális korlátnál nem nagyobbra történő beállításával. |
40867 |
16 | The DTU max per database must be at least (%d) for service tier '%.*ls'. Attempting to set the DTU max per database below the supported limit. |
Fontolja meg a kívánt beállítást támogató rugalmas készlet szolgáltatási szint használatát. |
40868 |
16 | The DTU max per database cannot exceed (%d) for service tier '%.*ls'. Attempting to set the DTU max per database beyond the supported limit. |
Fontolja meg a kívánt beállítást támogató rugalmas készlet szolgáltatási szint használatát. |
40870 |
16 | The DTU min per database cannot exceed (%d) for service tier '%.*ls'. Attempting to set the DTU min per database beyond the supported limit. |
Fontolja meg a kívánt beállítást támogató rugalmas készlet szolgáltatási szint használatát. |
40873 |
16 | The number of databases (%d) and DTU min per database (%d) cannot exceed the DTUs of the elastic pool (%d). Attempting to specify DTU min for databases in the elastic pool that exceeds the DTUs of the elastic pool. |
Fontolja meg a rugalmas készlet DTU-jainak növelését, vagy az adatbázisonkénti DTU-perc csökkentését, vagy a rugalmas készletben lévő adatbázisok számának csökkentését. |
40877 |
16 | An elastic pool cannot be deleted unless it does not contain any databases. The elastic pool contains one or more databases and therefore cannot be deleted. |
Távolítsa el az adatbázisokat a rugalmas készletből a törléshez. |
40881 |
16 | The elastic pool '%.*ls' has reached its database count limit. The database count limit for the elastic pool cannot exceed (%d) for an elastic pool with (%d) DTUs. Attempting to create or add database to elastic pool when the database count limit of the elastic pool has been reached. |
Fontolja meg a rugalmas készlet DTU-jainak növelését, ha lehetséges, az adatbáziskorlát növeléséhez, vagy az adatbázisok eltávolításához a rugalmas készletből. |
40889 |
16 | The DTUs or storage limit for the elastic pool '%.*ls' cannot be decreased since that would not provide sufficient storage space for its databases. Attempting to decrease the storage limit of the elastic pool below its storage usage. |
A DTU-k vagy a tárterületkorlát csökkentése érdekében fontolja meg az egyes adatbázisok tárolási használatának csökkentését a rugalmas készletben, vagy távolítsa el az adatbázisokat a készletből. |
40891 |
16 | The DTU min per database (%d) cannot exceed the DTU max per database (%d). Attempting to set the DTU min per database higher than the DTU max per database. |
Győződjön meg arról, hogy az adatbázisokhoz tartozó DTU-perc nem haladja meg az adatbázisonkénti DTU-maximumot. |
TBD |
16 | The storage size for an individual database in an elastic pool cannot exceed the max size allowed by '%.*ls' service tier elastic pool. The max size for the database exceeds the max size allowed by the elastic pool service tier. |
Állítsa be az adatbázis maximális méretét a rugalmas készlet szolgáltatási szintje által megengedett maximális méret korlátain belül. |
A bejelentkezés által kért "master" adatbázis nem nyitható meg. A bejelentkezés sikertelen volt
Ez a probléma azért fordul elő, mert a fiók nem rendelkezik hozzáféréssel az master adatbázishoz. Az SQL Server Management Studio (SSMS) azonban alapértelmezés szerint megpróbál csatlakozni az master adatbázishoz.
A probléma megoldásához kövesse az alábbi lépéseket:
Az SSMS bejelentkezési képernyőjén válassza a Beállítások, majd a Kapcsolat tulajdonságai lehetőséget.
A Csatlakozás az adatbázishoz mezőbe írja be a felhasználó alapértelmezett adatbázisnevét alapértelmezett bejelentkezési adatbázisként, majd válassza a Csatlakozás lehetőséget.
Írásvédett hibák
Ha írásvédett adatbázisba próbál írni, hibaüzenet jelenik meg. Bizonyos esetekben előfordulhat, hogy az adatbázis írásvédett állapotának oka nem feltétlenül egyértelmű azonnal.
3906-os hiba: A 'databaseName' adatbázis frissítése sikertelen, mert az adatbázis csak olvasható.
Írásvédett adatbázis módosításakor a következő hiba jelenik meg.
Msg 3906, Level 16, State 2, Line 1
Failed to update database "%d" because the database is read-only.
Több lehetséges magyarázat is van arra, hogy miért írásvédett az adatbázis.
Manuális feladatátvétel után az alkalmazások továbbra is a régi replikához csatlakoznak
Az Azure SQL Database-ben előfordulhat, hogy az alkalmazás a DNS miatt továbbra is csatlakozik az előző elsődleges replikához, miután feladatátvételt végzett egy másik replikára. A feladatátvételi csoport kapcsolatának útválasztása a DNS használatával történik.
Lehetséges kiváltó okok:
A feladatátvétel során a feladatátvételi csoport végpontjai úgy frissülnek, hogy a megfelelő DNS-bejegyzés céljának módosításával a megfelelő új elsődleges és új másodlagos kiszolgálókra mutassanak. Alapértelmezés szerint a DNS-bejegyzések 30 másodperces TTL-vel jönnek létre, ami azt jelenti, hogy a DNS-ügyfelek 30 másodpercig gyorsítótárazják ezeket a bejegyzéseket. Ennek eredményeképpen a DNS-rekordok frissítései nem propagálnak azonnal; a bejegyzések mindaddig elavultak lesznek, amíg az összes ügyfél és köztes csomópont nem frissíti a gyorsítótárakat. Így a bejelentkezések a feladatátvételi csoport végpontjaira 0 és körülbelül 10 perc közötti időt vehetnek igénybe, amíg a feladatátvételt követően az új célokra irányítják őket. A DNS-gyorsítótárak kiürítése lehet, hogy nem segít a problémán, mivel a DNS-kérésekre válaszoló köztes hálózati csomópontok is egy ideig gyorsítótárazzák a DNS-eredményeket.
A probléma javasolt kerülő megoldása, hogy egyszerűen várjon addig, amíg a DNS-bejegyzések a kliensen frissülnek. Jelenleg ez az áthidaló megoldás azt eredményezné, hogy a probléma magától megoldódik 10 percen belül.
Egyes SQL-ügyfélkódtárak egy "kapcsolatkészletezés" nevű funkciót használnak, amely újrahasznosítja a kapcsolódásokat ugyanahhoz az adatforráshoz, ahelyett, hogy bezárná és újra megnyitná azokat, valahányszor új adatbázis-kapcsolatra van szükség. ADO.NET-ben alapértelmezés szerint a kapcsolatkészletezés engedélyezve van. Az 1. pontban ismertetett probléma együttes használata esetén a kapcsolatkészletezés miatt az újonnan megnyitott kapcsolatok újra felhasználhatják a régi adatbázishoz való kapcsolatot, így megakadályozva, hogy az alkalmazás határozatlan ideig csatlakozzon az új elsődleges adatbázishoz.
Megoldások:
Feladatátvételi csoport feladatátvétele után három lehetséges megoldás kínálkozik a DNS-probléma megkerülésére.
- Módosítsa az alkalmazást úgy, hogy hívja meg a
SQLConnection.ClearAllPoolsvagySQLConnection.ClearPool(conn)függvényt, amikor "csak olvasható" hibát észlel. - Az alkalmazás kapcsolati sztringjében adja meg
Pooling=Falsea kapcsolatkészletezés letiltását. Ezt tesztelni kell, mivel az jelentősen befolyásolhatja a teljesítményt, ha az alkalmazás gyakran nyit meg és zár be kapcsolatokat. - A DNS-replikáció és -gyorsítótárazás késleltetésének elkerülésére egy másik lehetőség közvetlenül kapcsolódni az Azure SQL Database logikai kiszolgáló nevén (az eredeti másodlagos kiszolgálón, most az új elsődlegesen) a 3906-os hibakód megjelenése utáni időkeretben.
Előfordulhat, hogy egy csak olvasható replikához van csatlakoztatva.
Az Azure SQL Database és az Azure SQL Kezelt Példány esetében is lehet, hogy egy csak olvasható replika adatbázishoz kapcsolódik. Ebben az esetben a DATABASEPROPERTYEX() függvényt használó alábbi lekérdezés eredménye READ_ONLY:
SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability');
GO
Ha az SQL Server Management Studióval csatlakozik, ellenőrizze, hogy megadta-e ApplicationIntent=ReadOnly a kapcsolati beállításokTovábbi kapcsolati paraméterek lapján.
Ha a kapcsolat egy alkalmazásból vagy ügyfélből jön egy kapcsolati karakterlánc használatával, ellenőrizze, hogy meg van-e adva benne ApplicationIntent=ReadOnly. Tudhat meg többet itt: Csatlakozás írásvédett másolathoz.
Lehetséges, hogy az adatbázis írásvédettre van állítva
Ha az Azure SQL Database-t használja, lehet, hogy az adatbázis maga írásvédett. Az adatbázis állapotát az alábbi lekérdezéssel ellenőrizheti:
SELECT name, is_read_only
FROM sys.databases
WHERE database_id = DB_ID();
Az Azure SQL Database-ben lévő adatbázisok írásvédett állapotát az ALTER DATABASE Transact-SQL használatával módosíthatja. Felügyelt példányban jelenleg nem lehet az adatbázist csak olvashatóvá állítani.
Ellenőrizze, hogy csatlakozási hiba okozza-e a hibát
Annak ellenőrzéséhez, hogy egy csatlakozási probléma okozza-e a hibát, tekintse át a kapcsolat megnyitására irányuló hívásokat megjelenítő keretek veremkövetését (jegyezze fel az SqlConnection osztályra mutató hivatkozást):
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at AzureConnectionTest.Program.Main(String[] args)
ClientConnectionId:<Client connection ID>
Ha a kivételt lekérdezési problémák aktiválják, az alábbihoz hasonló hívásverem jelenik meg (jegyezze fel az SqlCommand osztályra mutató hivatkozást). Ebben az esetben hangolja be a lekérdezéseket.
at System.Data.SqlClient.SqlCommand.ExecuteReader()
at AzureConnectionTest.Program.Main(String[] args)
ClientConnectionId:<Client ID>
A teljesítmény finomhangolásával kapcsolatos további információkért lásd:
- Azure SQL-indexek és -statisztikák karbantartása
- Alkalmazások és adatbázisok teljesítményének optimalizálása az Azure SQL Database-ben
- Teljesítmény monitorozása dinamikus felügyeleti nézetekkel
- A lekérdezéstár üzemeltetése az Azure SQL Database-ben
Kapcsolódó tartalom
- kapcsolati architektúra
- Azure SQL Database és az Azure Synapse Analytics hálózati hozzáférés-vezérlése
- Teljes tranzakciónapló hibaelhárítása az Azure SQL Database-ben
- Teljes tranzakciónapló hibaelhárítása az Azure SQL Felügyelt Példányban
- Átmeneti csatlakozási hibák elhárítása
- Holtpontok elemzése és megakadályozása az Azure SQL Database-ben és a Fabric SQL Database-