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

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
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
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.
configuration minimale sql60 sql65

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 158586 - Dernière mise à jour : 02/08/2014 16:06:41 - Révision : 3.0

Microsoft SQL Server 6.0 Standard, Microsoft SQL Server 6.5 Édition Standard

  • kbnosurvey kbarchive kbmt KB158586 KbMtfr
Commentaires