This is all detailed exhaustively on this page.
Being that your question specifically asks "are there any recommended by Microsoft" I'm inclined to think that this is counter-productive to have this discussion here. The article their details the process through
- Using either
- command line
- Powershell,
- SQL Server Management Studio (GUI)
- For 2008, 2012, 2014, 2016.
- For the either
- Database Engine
- or, Agent
Whether or not those steps are satisfactory would be my opinion, which you don't want. So the right answer will always be most up to date there.
Stopping the service, prior to power down
is it necessary or recommended to do so before shutting down a server that happens to be running SQL services.
No, it's not necessary. When the Windows Kernel sends the signal to shutdown to SQL Server, it will do so in a fashion that is safe and the system will wait for it to complete. Speaking generally, anything built with the ability to safely shutdown does not have to be shutdown manually, and it stands to reason all Microsoft applications follow their own API and procedures tying into the PRESHUTDOWN
, or SHUTDOWN
phases. From the docs on PRESHUTDOWN
, which I assume they're using,
Notifies a service that the system will be shutting down. Services that need additional time to perform cleanup tasks beyond the tight time restriction at system shutdown can use this notification. The service control manager sends this notification to applications that have registered for it before sending a SERVICE_CONTROL_SHUTDOWN
notification to applications that have registered for that notification.
A service that handles this notification blocks system shutdown until the service stops or the preshutdown time-out interval specified through SERVICE_PRESHUTDOWN_INFO
expires. Because this affects the user experience, services should use this feature only if it is absolutely necessary to avoid data loss or significant recovery time at the next system start.
As it may necessary, I assume that's how SQL Server works.