Azure SQL Database errors — login, network, availability, throttling, resource limits and management operations
The Azure SQL Database error numbers an app or deployment meets, with Microsoft's verbatim messages, cause, check and fix — 18456, 4060, 40615, 47072, 47073, 42101, 33134, 26 and 40, the transient 40613, 40197, 40501, 10928, 10929 (and how long to back off), the session limits 40544 and 40549–40553, management limits 49918–49920 — plus which ones the Node.js tedious driver retries by itself and how its errors expose the number.
markdownreferencev1W0HQ-C7CKstage: operatetrust: officialservice: sqlinterface: sdkinterface: anyAzure SQL error 18456Login failed for usererror 4060Cannot open database requested by the login. The login failed.error 40615Cannot connect to < servername >error 47073The public network interface on this server is not accessible.error 47072Login failed with invalid TLS versionerror 42101Unable to create or modify firewall rules when public network interface for the server is disabled.error 33134error 40613is not currently available. Please retry the connection later.error 40197The service has encountered an error processing your request. Please try again.error 40501The service is currently busy. Retry the request after 10 seconds.error 10928error 10929error 40544The database has reached its size quota.error 40549error 40550error 40551error 40552error 40553error 49918error 49919error 49920error 26 Error Locating Server/Instance Specifiederror 40 Could not open a connection to SQL Servertransient errors retrytedious ELOGINtedious maxRetriesOnTransientErrorsmssql RequestError number
Azure SQL Database errors
Messages are Microsoft's; %… and <…> are placeholders. Connection-level guidance: reference/sql/connections-and-auth.md.
Login and network
| Error | Cause → fix | Check |
|---|---|---|
18456 Login failed for user '<User name>'.This session has been assigned a tracing ID of '<Tracing ID>'. … | Wrong credentials, disabled login, no database user; with Entra-only on, any SQL login. For apps: no CREATE USER … FROM EXTERNAL PROVIDER in that database, or the token is for the wrong identity. A stale hosts/DNS override pinned to an old gateway IP also does it | SELECT name, is_disabled FROM sys.sql_logins; / sys.database_principals in the app database |
4060 Cannot open database "%.*ls" requested by the login. The login failed. | The principal has no user in the requested database (tools default to master). Create the user there, or set the right database in the connection | Connection string database |
40615 Cannot connect to < servername > | Client IP not in any server or database IP rule | az sql server firewall-rule list -g <rg> -s <server> |
47073 An instance-specific error occurred while establishing a connection to SQL Server. The public network interface on this server is not accessible. To connect to this server, use the Private Endpoint from inside your virtual network. | Public network access is disabled: connect through a private endpoint (and its DNS), or enable selected networks | az sql server show -g <rg> -n <server> --query publicNetworkAccess |
42101 Unable to create or modify firewall rules when public network interface for the server is disabled. … | IP rules can't be managed while public access is off | Same |
47072 Login failed with invalid TLS version | Client below the server's minimum TLS (1.2 at least now) | Driver or OS TLS settings |
| 33134 (creating an Entra user) | Conditional Access blocks the server's Graph calls, or an app runs CREATE USER: allow Microsoft Graph in the policy, or run it as a user | — |
26 … (provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified) / 40 … (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) | The client can't reach the server: wrong name, DNS, firewall, or blocked 1433 (and 11000–11999 for Redirect) | nslookup <server>.database.windows.net; Test-NetConnection -Port 1433 |
Transient: retry with backoff
| Error | Meaning |
|---|---|
40613 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'. | Reconfiguration, failover, or a paused serverless database resuming (under a minute). Support case if it lasts past 60 seconds or recurs daily |
40197 The service has encountered an error processing your request. Please try again. Error code %d. | Upgrade, hardware failure or failover; log the inner code (40020, 40143, 40166, 40540) |
40501 The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d. | Engine throttling: wait at least 10 seconds |
10928 Resource ID: %d. The %s limit for the database is %d and has been reached. … | Worker (or session) limit: reduce blocking and parallelism, then scale |
10929 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 … | Retry later; in elastic pools add capacity or move databases |
Microsoft's guidance: wait 5 seconds before the first retry, grow the delay exponentially to 60 seconds, cap the attempts, and after a failure mid-query open a new connection before retrying; retry an UPDATE only inside a transaction you know rolled back. Its sample also treats 10053, 10054, 10060, 233, 64, 40540 and 40143 as transient.
Node.js (tedious, used by mssql): tedious itself retries the login-time errors 4060, 10928, 10929, 40197, 40501 and 40613, three times 500 ms apart by default (maxRetriesOnTransientErrors, connectionRetryInterval): too short for a serverless resume. Login failures surface as ConnectionError with code: 'ELOGIN' and the server's message but no error number; query errors (RequestError) carry number. A retry wrapper must check both (guides/sql/connect-from-typescript.md).
Session and resource limits
| Error | Fix |
|---|---|
40544 The database has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions. | Raise MAXSIZE if the tier allows, clean up, or scale |
40549 Session is terminated because you have a long-running transaction. Try shortening your transaction. | Batch the work; look for blocking |
40550 The session has been terminated because it has acquired too many locks. … | Smaller transactions |
40551 The session has been terminated because of excessive tempdb usage. … | Fewer or smaller temp objects |
40552 The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction. | Batch; bulk loads with a batch size; REBUILD WITH ONLINE = ON |
40553 The session has been terminated because of excessive memory usage. Try modifying your query to process fewer rows. | Tune the query (sorts, grouping); scale |
Management operations
| Error | Fix |
|---|---|
49918 Cannot process request. Not enough resources to process request. The service is currently busy. Please retry the request later. | Retry later |
49919 Cannot process create or update request. Too many create or update operations in progress for subscription "%ld". / 49920 Cannot process request. Too many operations in progress for subscription "%ld". | Wait for or cancel pending operations (sys.dm_operation_status in master); serialize automation |