Emplacement tempdb cassé et impossible de récupérer

8

A fait une erreur et a mal tapé une commande alter database pour tempdb.

Maintenant, l'instance ne démarre pas. Je ne peux pas démarrer en mode mono-utilisateur en utilisant -m car il indique que tempdb est introuvable. J'ai essayé d'utiliser:

net start msqsqlserver /f /t3608

Mais je ne peux pas du tout me connecter à l'instance à l'aide de sqlcmdou ssms.

Tim Alexander
la source
Que dit le journal des erreurs du serveur SQL?
Max Vernon
Quel changement avez-vous fait?
Max Vernon

Réponses:

12

Démarrez SQL Server en tant qu'application, et non en tant que service, en mode de configuration minimale et en ne récupérant que le maître, à partir d'une invite de commande:

[path to this instance]\BINN\sqlservr.exe -c -f -T3608

(Ajoutez -s InstanceNames'il s'agit d'une instance nommée.)

Maintenant, dans une autre invite de commande, connectez-vous à l'aide de SQLCMD:

sqlcmd -S InstanceName -E

Et émettez une correction (vérifiez ceci !!!), puis fermez l'application:

> ALTER DATABASE tempdb MODIFY FILE ...
> SHUTDOWN WITH NOWAIT;
> GO
Aaron Bertrand
la source
J'ai fini par entrer via cette méthode, bien que je ne sois pas sûr pourquoi elle ne me permettait pas de me connecter. À la fin, j'ai désactivé tous les services, fait rebondir la boîte et exécuté la machine virtuelle sans connexion réseau et cela semblait fonctionner. Merci pour les pointeurs cependant. J'espère que cela sera utile à quelqu'un d'autre à l'avenir aussi!
Tim Alexander
0
  1. Démarrer le serveur SQL en mode mono-utilisateur - Net Start MSSQLServer / mSQLCMD / f / t3608

  2. Pour être en mode utilisateur unique sqlcmd -S. –E

  3. Exécutez les commandes

Modifier le fichier de modification de la base de données tempdb (name = tempdev, filename = 'E: \ SQLDATA \ DEFAULT \ tempdb.mdf')

Modifier le fichier de modification de la base de données tempdb (name = templog, filename = 'E: \ SQLDATA \ DEFAULT \ Templog.ldf')

  1. Arrêter le serveur sql Net stop mssqlserver
Sai
la source