PRB: 'Temp_db' dispositivo causa problemas iniciando SQL Server

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 158586
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Si SQL Server se inicia de manera que se coloca en tempdb en RAM (ya sea estableciendo explícitamente la opción 'tempdb en RAM' o iniciando en modo de configuración mínima utilizando el parámetro -f en la línea de comandos), SQL Server no se puede iniciar correctamente si un dispositivo con un nombre de dispositivo de 'temp_db' ya existe.
Causa
Cuando se coloca tempdb en RAM, SQL Server primero intenta crear un dispositivo de RAM con un nombre lógico de 'temp_db' y después de crear la base de datos tempdb en este dispositivo. Si ya existe un dispositivo con el nombre 'temp_db', el intento de insertar una entrada en la tabla sysdevices fallará; por tanto, no puede crearse tempdb.

El registro de errores de SQL Server contendrá la secuencia de mensajes de error siguiente:
Intentar insertar una fila de clave duplicada en el objeto 'sysdevices' con índice único 'sysdevices' (mensaje 2601)

crdb_tempdb: no se puede mover tempdb en RAM; dispositivo RAM no existe, no se puede crear o no tiene suficiente espacio para tempdb.

El servidor continuará el proceso de inicio y, le informe probablemente también otros mensajes de error.



Si intenta utilizar tempdb durante el inicio (por ejemplo, en un procedimiento almacenado de inicio), puede aparecer los siguientes mensajes de error y el servidor se podrán iniciar:
Msg 906: No se pudo encontrar fila en sysobjects para el catálogo de sistema 'sysobjects' en la base de datos 'tempdb'....

Msg 615: No se puede encontrar id de tabla de base de datos = 2, nombre = 'tempdb'....

Si intenta tener acceso a tempdb una vez iniciado el servidor, se registrarán los mensajes anteriores, pero no se detendrá el servidor.

Solución
Para iniciar el servidor, vaya a un símbolo del sistema y desplácese al directorio BINN donde se instaló SQL Server (por ejemplo, SQL60\BINN para SQL Server 6.0 o MSSQL\BINN para SQL Server 6.5). A continuación, utilice la siguiente línea de comandos, que distingue mayúsculas de minúsculas, para iniciar SQL Server:
sqlservr - c -m - T3609 - T4022



Tenga en cuenta que el uso de -m inicia SQL Server en modo de usuario único. Tras el primer inicio de sesión correctamente, las solicitudes siguientes recibirá un mensaje "Error de inicio de sesión" hasta que la primera conexión ha cerrado la sesión. Asegúrese de que detener los procesos automatizados que pueden estar intentando iniciar sesión en SQL Server (por ejemplo, SQL Executive, Monitor, etc.).

Una vez iniciado SQL Server, utilice ISQL/w para conectarse a SQL Server. Observe que no será capaz de utilizar el Administrador corporativo de SQL; no está disponible con estos parámetros de inicio (porque utiliza tempdb). Una vez conectado, utilice el comando siguiente para quitar el dispositivo existente denominado 'temp_db' para que SQL Server pueda crear ese dispositivo durante el inicio.
sp_dropdevice 'temp_db'

Si otras bases de datos además de tempdb se han expandido en el dispositivo, el comando informará de los nombres de estas bases de datos. Estas bases de datos deberá quitarse, mediante el comando DROP DATABASE, para que el dispositivo temp_db puede eliminarse.



Si SQL Server aún no se puede iniciar correctamente después de seguir los pasos anteriores y ha establecido explícitamente tempdb en RAM, utilice el comando siguiente para intentar coloque tempdb en el disco.
sp_configure 'tempdb en RAM,' 0
reconfigure with override

Esto debería colocar tempdb volver en el dispositivo predeterminado con el tamaño de base de datos predeterminado (normalmente 2 MB en el patrón). Detenga y reinicie SQL Server. En este momento, desea quitar el dispositivo con el nombre temp_db y crear un dispositivo con un nombre diferente y, a continuación, expanda tempdb en este nuevo dispositivo.
configuración mínima de sql60 sql65

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 158586 - Última revisión: 02/05/2014 01:20:22 - Revisión: 3.0

Microsoft SQL Server 6.0 Standard Edition, Microsoft SQL Server 6.5 Standard Edition

  • kbnosurvey kbarchive kbmt KB158586 KbMtes
Comentarios