If you are seeing this error in the ERRORLOG on your production server then you must read this blog. I have collected some information about the message and its causes. Let us learn about Autogrow of file.
First of all, the error message would come when the database file(s) is set to grow automatically and SQL is not able to complete the growth in time. Let’s assume that you start a transaction from application which causes the file to grow and growth kicks in. The time taken by the transaction would include real work done (any DML) and the time taken to grow the file. Now, if due to some reason the growth has taken more time and total transaction time is more than timeout period, the application would cancel the transaction. This would cause above error message and file won’t be grown. If same transaction comes again and same cycle repeats, you would see a continuous message in the ERRORLOG file.
2017-03-14 18:32:58.25 spid118 Autogrow of file ‘SQLAuth_Log’ in database ‘SQLAuth’ was cancelled by user or timed out after 10046 milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.
Based on my understanding, the error message can come due to two possible reasons:
- The growth setting of Transaction log is set to a huge size. This can generally happen percent growth is used instead of fix growth.
The advice in this situation would be to use fixed size, growth rather than percentage growth.
- Another possibility that the disk is performing slow. Even if the size of the growth is small, due to disk slowness, it might take more time to complete the growth and might time out.
- If you still want to let the file grow automatically, then at least make sure that you provide perform volume maintenance task permission to the SQL Server service account. Instant file initialization would be activated when the service account has been granted SE_MANAGE_VOLUME (Perform Volume Maintenance Tasks). https://technet.microsoft.com/en-us/library/ms175935.aspx.This would help in “quick” growth of the data files NOT transaction log file because log file would be zeroed out.
Few of client, keep a track of database growth and grow the file manually during a scheduled time. I like this approach because you are making sure that database file doesn’t grow automatically.
If you have any more thought, please feel free to share via comments.
Reference: Pinal Dave (http://blog.SQLAuthority.com)