Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

License Error 833

Error 833: I/O Requests Taking Longer Than 15 Seconds on Your Storage

12 min read Updated October 5, 2026 SQL Server

Fix it now

SQL Server has issued reads or writes that took longer than fifteen seconds to come back. It is informational and the instance keeps running, but fifteen seconds is a stall, not a delay, and the fault is below the database.

Run this on the instance to get average stall per file

SELECT DB_NAME(vfs.database_id) AS db, mf.physical_name,
       vfs.num_of_reads, vfs.io_stall_read_ms / NULLIF(vfs.num_of_reads,0)  AS avg_read_ms,
       vfs.num_of_writes, vfs.io_stall_write_ms / NULLIF(vfs.num_of_writes,0) AS avg_write_ms
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf
  ON mf.database_id = vfs.database_id AND mf.file_id = vfs.file_id
ORDER BY avg_write_ms DESC;
  1. Read the error log entries and note which file and which database each names. Data files, the log and tempdb sit on different parts of the storage path.
  2. Compare the figures above with the PhysicalDisk counters for average seconds per read and per write, so you know whether Windows sees the same delay.
  3. Check the Windows system event log for disk and storage driver events at the same timestamps. Reset and retry entries put the fault below SQL Server.
  4. Exclude SQL Server data files from real-time antivirus scanning. Microsoft names filter drivers, including antivirus, as a documented cause and the exclusion as a documented action.
  5. Check whether a backup, snapshot or replication job runs at those times. Correlating timestamps usually names the culprit in one step.

Microsoft’s own guidance for 833 starts with the system event log and hardware logs, then driver and firmware levels, then the antivirus exclusion. Work in that order before touching the database.

If the stalls stop when the overlapping job or the scanner is dealt with, you are done. If they do not, the next section covers what 833 measures and how 845, 17883 and 17884 fit around it.

Why it happens

SQL Server tracks how long each outstanding I/O has been pending. When a request against a file has been waiting fifteen seconds or longer, it writes a message naming the file, the database, how many such occurrences it has seen, the OS file handle and the offset of the most recent long I/O. That threshold is deliberately generous. Fifteen seconds is not a marginal delay; by the time you see 833, latency has been poor for a while and only the very worst requests are being reported.

Microsoft’s own cause list for this message is wider than most people expect: faulty hardware, hardware configured incorrectly, firmware settings, filter drivers such as antivirus, compression, software bugs, a workload that exceeds what the I/O path can carry, and operating system performance problems. Note what is not on it – a shortage of database memory. Adding RAM reduces physical reads, which reduces the number of stalls you see, but it does nothing for log writes, checkpoints or backups, all of which still have to reach the disk.

845 sits one layer up. It is Time-out occurred while waiting for buffer latch type %d for page %S_PGID, database ID %d, and it usually means a task waited for a page that was still coming off disk. 17883 is the scheduler monitor reporting a worker that appears to be non-yielding, with kernel and user CPU times and the system idle percentage in the message. 17884 is its sibling, SRV_SCHEDULER_DEADLOCK: new queries assigned to a node have not been picked up by any worker thread for some seconds. Slow storage produces all four, because workers blocked on I/O stop behaving like workers.

Something else is reading or scanning the database files

You have this one if The stalls cluster at fixed times, and a backup, snapshot or scanning product runs then.

  1. Exclude the data, log and backup files and their directories from real-time antivirus scanning, following the antivirus vendor’s documented method.
  2. Move host-level snapshots and virtual machine backups away from the busy period.
  3. Stagger index maintenance and consistency checks so they do not overlap the transactional peak.

Microsoft lists filter drivers and compression among the causes of 833 and names excluding SQL Server data files from antivirus scans among the actions. This is not folklore.

The storage path is saturated or misconfigured

You have this one if Latency is high across every file on the same volume and the operating system counters agree with SQL Server.

  1. Check queue depth, multipath configuration and host bus adapter settings against the storage vendor’s guidance for database workloads.
  2. Look for thin provisioning or an oversubscribed array. A volume that looks dedicated can be sharing spindles with everything else.
  3. In a virtual machine, check host memory ballooning and CPU contention; both appear inside the guest as slow I/O.
  4. Confirm the volumes holding data and log files are not NTFS-compressed, which is unsupported for those files.

File growth is stalling writes

You have this one if 833 entries coincide with autogrowth events, and the growth increments are small percentages rather than fixed sizes.

  1. Pre-size data and log files to what they will actually need instead of letting them grow in small steps.
  2. Set growth increments to a fixed size appropriate to the file, not a percentage.
  3. Grant the Database Engine service account or its service SID the Perform volume maintenance tasks right so data file growth can use instant file initialization.
  4. Turn autoshrink off. Microsoft lists it among the actions for 845 because it creates repeated size changes for no benefit.

Since SQL Server 2022, transaction log autogrowth events up to 64 MB can also use instant file initialization, and those do not need the volume maintenance privilege. Growth events larger than 64 MB still cannot, which is another argument for a sensible fixed growth increment.

A device or path is failing rather than merely busy

You have this one if Storage retry or reset events appear in the Windows system log and the latency is erratic rather than uniformly high.

  1. Take the storage events to whoever owns the array or the host. Retry and reset entries from the storage driver are hardware or fabric evidence, not database evidence.
  2. Update device drivers and firmware for the adapter and the array against the vendor’s supported matrix; Microsoft names this explicitly for 833.
  3. Until it is resolved, treat the instance as at risk: verify that your backups restore and run consistency checks.

Full reference

Where the delay usually comes from

Observation Likely source
Only the log file is slow The write path, a cache policy, or the log sharing a spindle
Only tempdb is slow tempdb on the wrong storage, or a spill-heavy workload
Everything slow at the same times each day A backup, snapshot or antivirus scan overlapping production
Latency spikes with storage retry events in the system log A failing device or a saturated fabric
Autogrowth events at the same moment File growth stalling writes, often without instant file initialization
High latency on a virtual machine, host looks idle Ballooning or CPU contention at the host, seen inside the guest as I/O

The four messages and what each one is telling you

Error Published message Layer
833 SQL Server has encountered N occurrence(s) of I/O requests taking longer than 15 seconds to complete on file… The file, from the storage engine
845 Time-out occurred while waiting for buffer latch type N for page…, database ID N The buffer pool waiting on a page
17883 Worker appears to be non-yielding on Scheduler… The scheduler monitor, on one worker
17884 New queries assigned to process on Node N haven’t been picked up by a worker thread in the last N seconds The scheduler monitor, on a whole node

Microsoft’s guidance on 845 includes a line worth repeating: if the errors are infrequent, they can generally be ignored. It is repetition and clustering that make these worth an incident, not a single entry after a busy night.

Configuration options Microsoft names for 845

  • Priority boost – leave it off.
  • Lightweight pooling, the fibre mode option – leave it off.
  • Set working set size – leave it off.
  • Autoshrink – off, so the database is not repeatedly resizing itself.
  • Autogrow – configured with large increments so growth happens rarely.
  • Compressed volumes – unsupported for data and log files; move them.

Instant file initialization, and its one trade-off

Granting the Database Engine service account the Perform volume maintenance tasks right lets data file creation, growth, resize and restore skip the zeroing pass. The documented trade-off is that deleted disk content is overwritten only as new data is written, so until it is, that content is potentially readable by anyone who can get at the file – which in practice means detached files, backups without restrictive permissions, and storage handed back to a shared array. Microsoft’s own position is that the benefits usually outweigh the risk; the mitigation is restrictive permissions on detached files and backups. Note also that transparent data encryption prevents instant file initialization for data files.

What to do once the storage is stable again

Persistent I/O stalls can leave torn or damaged pages behind. When the storage is healthy again, run DBCC CHECKDB on the affected databases and confirm your most recent backups restore cleanly on another server before you treat the incident as closed.

Reading the scheduler messages

17883 carries kernel time, user time, process utilisation and system idle. Microsoft’s own reading of those numbers is worth borrowing: user mode climbing fast points at a loop inside the engine, kernel mode climbing fast points at the operating system, and both flat with process utilisation high points at preemptive work such as garbage collection. Low process utilisation and low system idle together mean SQL Server is not getting enough CPU at all, which is a host-level problem rather than a storage one.

When a licence is the actual fix

Fix the storage first; a licence does not make a slow disk fast, and nothing in Microsoft’s guidance for 833 involves buying anything. There is one narrow case where an edition change genuinely reduces the load on the storage path. SQL Server Standard has a published ceiling on the buffer pool – for SQL Server 2025 it is 256 GB per instance, alongside 32 GB for the columnstore segment cache and 32 GB of memory-optimized data per database – while Enterprise is limited only by the operating system. Where the working set is far larger than that ceiling, the buffer pool cannot hold enough data, ordinary queries generate far more physical reads than they should, and a storage path that would otherwise cope is pushed past its limit. Lifting the ceiling reduces read volume, not latency, so treat it as a second step once the storage measurements are clean. Arco supplies SQL Server 2025 Enterprise licences and will tell you when the measured numbers do not justify one.

Every code this article covers

Code What it points at Source
833 SQL Server has encountered occurrences of I/O requests taking longer than 15 seconds to complete on a named file. Informational, and a symptom of the I/O path Microsoft Learn
845 Time-out occurred while waiting for a buffer latch on a page, usually because the I/O behind it took too long Microsoft Learn
17883 A worker appears to be non-yielding on a scheduler, reported with kernel and user CPU time, process utilisation and system idle Microsoft Learn
17884 New queries assigned to a node have not been picked up by a worker thread for some seconds; the scheduler deadlock message Microsoft Learn

Confirm the fix worked

  1. Average stall per file from sys.dm_io_virtual_file_stats, re-measured after a full business day, has fallen.
  2. No new 833, 845, 17883 or 17884 entries appear in the error log across a peak period.
  3. The Windows system log shows no storage retry or reset events during the same window.
  4. DBCC CHECKDB on the affected databases reports no errors.
  5. A recent backup has been restored on another server and comes up clean.

Questions people ask about this

Is 833 dangerous or just noisy?

It is informational and the instance keeps running, but requests are stalling for fifteen seconds or more. Treat repeated entries as an incident: the same conditions produce timeouts, failovers and, at worst, damaged pages.

Will adding memory fix it?

It can reduce physical reads and therefore the number of stalls, which is not the same as fixing the storage. It does nothing for log writes, checkpoints or backups, all of which still have to reach the disk.

Should I move tempdb to different storage?

If tempdb is the file named in the entries, yes. Separating it from the data and log path also stops spill-heavy queries interfering with transactional work.

Do I need a bigger edition to fix slow I/O?

No. Microsoft’s documented causes and actions for 833 are hardware, firmware, drivers, filter drivers and workload. An edition change only helps in the narrow case where a capped buffer pool is forcing far more reads than the workload should need.

Can I ignore an occasional 845?

Microsoft says that if 845 errors are infrequent they can generally be ignored. It is clustering and repetition that matter, particularly alongside 833 on the same files.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

License Error Error 905 and 909: The Database Uses Features Your Edition Does Not Have License Error Errors 14420 and 14421: Log Shipping Backup and Restore Alerts Firing License Error Error 1827: SQL Server Express Has Hit Its Licensed Database Size Limit Free Fix Error 229 SELECT Permission Denied: Granting Rights Without Over-Granting
โ† Back to Knowledge Base