Repair/Remove/Install processes for SQL Server 201

2019-04-24 14:24发布

问题:

An instance of SQL Server 2012 Express became corrupted somehow.
I suspect it was related in some way to my use of Entity Framework, but have no proof yet.

When trying to repair the instance, the repair process seemed to be stuck at the SqlEngineConfigAction_repair_validation_Cpu64 step.
It was at that step for a long time with no noticeable CPU usage, so I finally cancelled the repair process.

When trying to remove the instance, the uninstall process seemed to hang at the SqlEngineConfigAction_remove_validation_Cpu64 step.

When trying to install a 2nd instance, the install process seemed to hang at the SqlEngineDBStartConfigAction_install_configrc_Cpu64 step.

For some of the attempts, the SQL Server services were not manually stopped beforehand. For other attempts, the services were manually stopped, and changed from "Automatic" to "Manual".

Symptoms of the database corruption, in case this helps:
"SQL Server (SQLEXPRESS)" service has a status of "Started" on system reboot, but gets stuck in "Starting" status when the service is manually restarted using the Restart option.

When the service is manually stopped and then started, it displays this error:

Windows could not start the SQL Server (SQLEXPRESS) service on Local Computer. Error 1053: The service did not respond to the start or control request in a timely fashion.

SSMS (SQL Server Management Studio) fails to connect to the instance. It either tries forever with no timeout or error displayed, or it displays this error:

A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - The wait operation timed out.)(Microsoft SQL Server, Error: 258)

EDIT: I'm guessing the down-vote was because this was not stated in the form of a question. So to clarify, the question is how to resolve the issue of the Repair, Remove, or Install process hanging?

EDIT2: As a followup, it turns out the root cause of the corruption was shutting down the Windows 7 PC without first explicitly stopping the SQL Server services, even though SQL Server Express was not actively being used at the time.

EDIT3: Issue seems to have been resolved in SQL Server 2014 Express.

回答1:

Here's what worked for me.

Solution 1:
- Stop the "SQL Server (SQLEXPRESS)" & "SQL Server VSS Writer" services and set their Startup Type to "Manual".
- Restart the PC.
- Run the repair process.
- Change the Startup Type back to "Automatic" and restart the services.

Solution 2:
- Stop the "SQL Server (SQLEXPRESS)" & "SQL Server VSS Writer" services and set their Startup Type to "Disabled".
- Restart the PC.
- Run the Remove process to uninstall SQL Server Express entirely (instance + shared components).
- Restart the PC again.
- [Optional] Run your favorite registry cleaner such as CCleaner.
- Install SQL Server Express (unless your goal was just to uninstall it).

NOTE: In the Solution 2 scenario, I tried the Repair process after the 1st PC restart, but it got stuck at step SqlEngineConfigAction_repair_validation_Cpu64.



回答2:

In my case the reason for the uninstaller getting stuck at SqlEngineConfigAction_repair_validation_Cpu64 were invalid file paths in the SQL server's system tables.

To correct this, allowing uninstallation, this worked for me:

1) Set service to use local account (Start -> Local Services -> SQL-Server->Properties -> Log on -> Local System acccount)

2) Follow the steps here: https://social.technet.microsoft.com/wiki/contents/articles/31786.sql-server-not-starting-after-fresh-installation.aspx

3) Retry uninstalling.

In case the above link becomes unavailable, here's a short summary:

  • Start the SQL server service in recovery mode: NET START MSSQL$SQLEXPRESS /f /T3608
  • Connect to server: SQLCMD -S .\SQLEXPRESS
  • List the files referenced in system table: SELECT name, physical_name, state_desc FROM sys.master_files ORDER BY database_id; (go)
  • Wherever the file path points to something invalid (like a missing drive), adjust it, using this: ALTER DATABASE model MODIFY FILE ( NAME = modeldev, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS01\MSSQL\DATA\model.mdf'); (go) Note that the files have different NAMEs and different extensions (.mdf, .ldf)
  • Exit sql server (exit)
  • Shut down the service NET STOP MSSQL$SQLEXPRESS