PRB: 'Temp_db' Device entraîne des problèmes démarrage de SQL Server

Traductions disponibles Traductions disponibles
Numéro d'article: 158586 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Symptômes

Si SQL Server est démarré afin que tempdb se trouve dans la mémoire vive (soit en définissant explicitement l'option 'tempdb in RAM', soit en démarrant en mode configuration minimale en utilisant le paramètre -f au niveau de la ligne de commande), SQL Server ne parvient pas à démarrer correctement si un périphérique avec un nom de périphérique du 'temp_db' existe déjà.

Cause

Lorsque tempdb est placée dans la mémoire RAM, SQL Server tente tout d'abord créer une unité de RAM avec un nom logique de «temp_db,», puis de créer la base de données tempdb sur ce périphérique. Si un périphérique existe déjà avec le nom 'temp_db', la tentative d'insertion d'une entrée dans la table sysdevices échouent ; ainsi, il est impossible de créer tempdb.

Le journal des erreurs de SQL Server contiendra la séquence de messages d'erreur suivante :
Essayez d'insérer une ligne de clé en double dans l'objet «sysdevices» avec un index unique 'sysdevices» (msg 2601)

crdb_tempdb : Impossible de déplacer tempdb en RAM; périphérique RAM n'existe pas, ne peut pas être créé ou ne possède pas assez d'espace pour tempdb.

Le serveur poursuivez le processus de démarrage et signalera susceptibles d'autres messages d'erreur.



Si vous essayez d'utiliser tempdb lors du démarrage (par exemple, dans une procédure stockées de démarrage), les messages d'erreur suivants peuvent être signalées et le serveur ne pourront pas démarrer :
Msg 906 : Ne pourrait pas localiser la ligne dans sysobjects pour le catalogue système 'sysobjects» dans la base de données 'tempdb'....

Msg 615 : Impossible de trouver l'id de table de base de données = 2, nom = 'tempdb'....

Si vous essayez d'accéder à tempdb après le démarrage du serveur, les messages ci-dessus sont enregistrées, mais le serveur n'arrêtera pas.

Contournement

Pour démarrer le serveur, ouvrez une invite de commande et accédez au répertoire BINN où SQL Server a été installé (par exemple, SQL60\BINN pour SQL Server 6.0 ou MSSQL\BINN pour SQL Server 6.5). Puis utilisez la ligne de commande suivante, qui respecte la casse, pour démarrer SQL Server :
sqlservr - c -m - T3609 - T4022



Veuillez noter que l'utilisation de -m démarre SQL Server en mode mono-utilisateur. Après la première connexion réussie, les demandes suivantes recevra un message «La connexion a échoué» jusqu'à ce que la première connexion s'est déconnecté. Assurez-vous que vous arrêtez les processus automatisés essayez peut-être de se connecter à SQL Server (par exemple, SQL Executive, Analyseur de performances, etc.).

Une fois SQL Server est démarré, utiliser ISQL/w pour vous connecter à SQL Server. Remarque Vous ne pourrez pas utiliser SQL Enterprise Manager ; il n'est pas disponible avec ces paramètres de démarrage (parce qu'il utilise tempdb). Une fois connecté, utilisez la commande suivante pour supprimer le périphérique existant nommé «temp_db» afin que SQL Server puisse créer ce périphérique lors du démarrage.
sp_dropdevice 'temp_db'

Si toutes les bases de données en plus de tempdb ont été développés sur le périphérique, la commande signale les noms de ces bases de données. Ces bases de données devra être supprimé, à l'aide de la commande DROP DATABASE, afin que le périphérique temp_db puisse être supprimé.



Si SQL Server ne parvient toujours pas à démarrer après avoir suivi les étapes ci-dessus et tempdb avait été explicitement placée dans la RAM, utilisez la commande suivante pour tenter de placer tempdb sur le disque.
sp_configure 'tempdb in RAM,' 0
Reconfigurez avec écrasement

Cela devrait remettez tempdb sur le périphérique par défaut avec la taille de base de données par défaut (généralement 2 Mo sur maître). Arrêtez et redémarrez SQL Server. À ce stade, vous souhaiterez peut-être supprimer l'unité avec le temp_db nom et créer une unité avec un nom différent, puis développez tempdb sur ce nouveau périphérique.

Propriétés

Numéro d'article: 158586 - Dernière mise à jour: samedi 8 février 2014 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 6.0 Standard
  • Microsoft SQL Server 6.5 Édition Standard
Mots-clés : 
kbnosurvey kbarchive kbmt KB158586 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 158586
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com