Fallos de SQL Server Long Horn o Windows Server 2008

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 13

Regional Distrito Capital

Centro de Gestión de Mercados, Logística y


Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS
DE CÓMPUTO

Oscar Alejandro Lozano Pinzón


40093

Teleinformática

2009
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

Control del Documento

Nombre Cargo Dependencia Firma Fecha


Centro de Gestión de
Mercados, Logística y
Autores Oscar A. Lozano Alumno
Tecnologías de la
Información
Centro de Gestión
de Mercados,
Revisión Ing. Luís E. redondo Instructor Logística y
Tecnologías de la
Información

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

FALLOS DE SQL SERVER LONG HORN O WINDOWS SERVER 2008

1. ERROR: dbprocerrhandle no se desencadena para el error 10029

Síntomas
El controlador de errores por proceso no se activa cuando el número de
estructuras DBPROCESS abiertas simultáneamente supera el número
máximo permitido (25 de manera predeterminada o el número establecido
por dbsetmaxprocs). La llamada a dbopen devuelve NULL, como se
esperaba. En este caso, si hay un controlador de errores globales instalados
se activará para indicar el error 10029: Número máximo de DBPROCESS ya
asignado.
Solución
Instale el controlador de errores global antes de realizar la llamada a dbopen
e instale después el controlador de errores por proceso para cada proceso.
Estado
Microsoft ha confirmado que se trata de un problema de las versiones 6.0,
6.5 y 7.0 de SQL Server, y de SQL Server 2000.
2. PRB: Tratamiento adecuado de la secuencia de escape \<cr><lf>

Síntomas
Microsoft SQL Server identifica como una secuencia de escape cualquier
comando Transact-SQL que contenga la barra diagonal inversa (\) seguida
de un retorno de carro (0x0d) y un salto de línea (0x0a).

El ejemplo siguiente demuestra este comportamiento:

Use pubs
go
drop table tblTest
Go
Create table tblTest
(
strData varchar(30)
)
Go
Insert into tblTest values ("c:\
X")
Go
Insert into tblTest values ("c:\\
X")

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

Go
Select * from tblTest
Go

strData
------------------------------
C: X
c:\
X

La primera instrucción insert contiene la secuencia \<cr><lf> y, cuando se


devuelve desde SQL Server, es c: X. SQL Server examina la secuencia de
escape.

Sin embargo, al reemplazar \<cr><lf> por \\<cr><lf><cr><lf>, como en la


segunda instrucción insert, se obtienen los resultados esperados.
Causa
SQL Server considera las secuencias \<cr><lf> (\ + 0d + 0a) y \<lf> (\ + 0a)
como secuencias de escape.
Solución
Para evitar este problema, corrija la cadena Transact-SQL, reemplazando
\<cr><lf> por \\<cr><lf><cr><lf> antes de enviar la consulta a SQL Server.
3. Los inicios de sesión de usuario y permisos en una base de datos
pueden ser incorrectos después de restaura la base de datos

Síntomas
Si se restaura un volcado de una base de datos de usuario de SQL Server en
un Server de SQL diferentes (como un servidor de copia de seguridad activo)
o en el mismo servidor de SQL Server después de ser reconstruir o volver a
cargar una versión anterior de la base de datos master, los inicios de sesión
de usuario y permisos en la base de datos es incorrectas.

Este problema puede revelar Sí de varias maneras:

• Al iniciar sesión en un servidor 6.x, los usuarios pueden recibir el error


siguiente:

• Msg 4002, nivel de servidor 14, estado de 1, Microsoft SQL


Server, la línea 0
Error de inicio de sesión
DB-Library: conexión incorrecta.

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

• Al iniciar sesión en un servidor 7.0, los usuarios pueden recibir el error


siguiente:

• Msg 18456, nivel de 14, estado de 1,


Error de usuario "%ls" inicio de sesión.

• Al intentar obtener acceso a los objetos dentro de la base de datos,


los usuarios pueden recibir el error siguiente:

• Msg 229, nivel de 14, State 1


permiso de %s denegado en el objeto %. * s, % de base de
datos. * s, %.*s propietario

• Al intentar crear un inicio de sesión y conceda acceso a la base de


datos restaurada o agregar el usuario a la base de datos, es posible
que se recibió el siguiente error:

• Microsoft SQL-DMO (SQLState de ODBC: 42000) Error 15023:


usuario o la función '%s' ya existe en la base de datos actual.

• Los usuarios pueden tener permisos en objetos para los que


anteriormente tenían no.

Causa

Información de inicio de sesión del usuario se almacena en la tabla syslogins


en la base de datos master. Cambiando los servidores, o mediante la
alteración esta información al reconstruir o restaurar una versión anterior de
la base de datos master, la información pueden variar de cuándo se creó el
volcado de base de datos de usuario. Si no hay inicios de sesión para los
usuarios, recibirán un mensaje de error que indica "Error de inicio de sesión"
al intentar iniciar sesión en el servidor. Si existen los inicios de sesión de
usuario, pero el SUID valores (para 6.x) o con SID valores (para 7.0) en
patrónsyslogins y la tabla sysusers en la base de datos de usuario diferentes,
los usuarios pueden tener permisos diferentes de lo esperado de la base de
datos de usuario.

Tenga en cuenta Si estás utilizando Microsoft SQL Server 2005, la


tabla syslogins y la tablasysusers se implementan como vistas de
compatibilidad. Estas vistas son sys.syslogins ysys.sysusers . Para
obtener más información acerca de las vistas de compatibilidad, vea el tema

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

"vistas de compatibilidad (Transact-SQL)" en los libros en pantalla de SQL


Server 2005.

Solución

Para solucionar este problema, siga uno de los procedimientos siguientes:

• Si las secuencias de comandos actuales disponibles para agregar los


inicios de sesión, los usuarios y permisos, eliminar y volver a ellas
desde secuencias de comandos. Para ejemplos del uso de secuencias
de comandos para transferir los inicios de sesión entre los servidores,
vea el artículo de base de conocimiento de Microsoft siguiente:

246133 Cómo: Transferir inicios de sesión y contraseñas entre


instancias de SQL Server

240872 Cómo resolver problemas de permisos cuando una base de


datos se movido entre servidores SQL Server

• Puede utilizar el procedimiento almacenado de


sp_change_users_login para reassociate las relaciones entre las
tablas syslogins sysusers y sysalternates. Sin embargo, el
procedimiento realiza las estimaciones en vínculos y puede permitir
más privilegios de acceso que se pretende que un usuario. Ejecutar el
procedimiento con la opción de informe en primer lugar se generar
una lista de usuarios que se ser modificado. A continuación, debe
compruebe que los usuarios afectados tienen los permisos
adecuados. También, ser conscientes de que el procedimiento de
sp_change_users_login no soluciona permisos problemas derivadas
de los inicios de sesión y usuarios creados en un orden diferente en la
base de datos donde se restaura la copia de seguridad.
• Restaure un volcado de la base de datos maestra desde el momento
del volcado de base de datos de usuario en el servidor antes de
cargar la base de datos de usuario. Esto garantiza que toda
información de usuario de la base de datos de usuario coincide con
correctamente con la tabla syslogins de página maestra.

WARNING: la base de datos principal contiene información de todo el


servidor y afecta a todas las bases de datos del servidor. Mediante la
restauración de la base de datos master, puede encontrarse con los
identificadores de usuario adicionales y las bases de datos que se
pierden o tienen permisos incorrectos. Los cambios en el patrón de

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

que se han producido desde el momento de la copia de seguridad se


perderán. Sólo utilice este método si está seguro de que la versión de
copia de seguridad de la base de datos principal contiene información
precisa para la base de datos de usuario en cuestión y todos los
demás bases de datos en el servidor.
• Administrador (para 6.x) o DTS (para 7.0) de transferencia de uso
para copiar los inicios de sesión. Tenga en cuenta que las contraseñas
no se transfiere mediante este método.
• Póngase en contacto con el proveedor principal de soporte técnico.

4. PRB: Las secuencias de comandos de procedimientos


almacenados no se generan según el orden de dependencia

Síntomas

En las versiones 6.5 y posteriores de Microsoft SQL Server, las secuencias


de comandos para los procedimientos almacenados se generan en orden
alfabético si las opciones de dependencias del objeto no están
seleccionadas. Cuando ejecute la secuencia de comandos para crear los
procedimientos almacenados obtendrá el mensaje de error siguiente:

• Msj 2007: No se pueden agregar filas a Sysdepends para el


procedimiento almacenado actual porque depende del objeto
<nombre de objeto> que falta. Sin embargo, se creará el
procedimiento.

Este error no afecta a la posibilidad de utilizar los procedimientos


almacenados. Se crearán y podrá ejecutarlos. Puede evitar este mensaje de
error si selecciona la opción "Mostrar dependencias del objeto" cuando se
generan las secuencias de comandos. Sin embargo, la secuencia de
comandos incluirá todos los demás objetos de los que dependan los
procedimientos almacenados. Esto puede ocasionar problemas si selecciona
la opción Quitar objetos y los procedimientos almacenados dependen de
tablas.

Solución

Para evitar este problema, realice una de las siguientes acciones:

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

• Genere las secuencias de comandos sin incluir las dependencias de


los objetos y pase por alto el error que aparecerá al ejecutar la
secuencia de comandos para crear los procedimientos almacenados.

O bien
• Incluya las dependencias de los objetos y elimine las secciones de
quitar y crear tabla.

5. CORREGIR: READTEXT puede errores con MSG 7134 si duro


codificación puntero de texto

Síntomas

La instrucción READTEXT se cerrará con "MSG 7134, Level 16, State 2" si
se true dos de las siguientes condiciones:

• Disco duro se codifica el puntero de texto proporcionado.

-y-
• La instrucción READTEXT es la primera instrucción del lote.

Solución

Para solucionar el problema, siga uno de los siguientes procedimientos:

• Utilizar una variable local para almacenar el puntero de texto, en lugar


de codificación duro directamente el valor de puntero de texto.

-o-
• Asegúrese de que la instrucción READTEXT no está la primera
instrucción en el lote. Puede pensar en realizar una selección "ficticia",
como "Select @@Version".

6. Error: hace que de inicio de sesión/cierre de sesión 'conexiones


de usuario máxima conexión' error

Síntomas

Las aplicaciones que utilizan conexiones de realizar o salto o realizar un gran


número de operaciones repetitivas de inicio o cierre de sesión pueden

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

provocar errores falsos sobre exceder el número máximo de conexiones de


usuario configurado. Las siguientes es el texto de un mensaje de error
ejemplo:

• Msg 17809: no se puede conectar. El número máximo de "100"


configurado
las conexiones de los usuarios ya están conectadas...
Solución
Si estás utilizando ODBC 3.0, puede utilizar reducir el número de conectar y
desconectar las operaciones de agrupación de conexiones. De lo contrario,
vuelva a intentar la operación de inicio de sesión o mantener una conexión
permanente a SQL Server.

7. CORREGIR: infracción de acceso de lazywriter durante la


actividad DUMP

Síntomas

Durante alta actividad del proceso lazywriter, un comando DUMP puede


ocasionar una infracción de acceso (AV) de lazywriter. El siguiente error
aparece en la errorlog:

• núcleo lazywriter: procesar infracción de acceso generado 2;


SQL Server es
terminar este proceso

El comando DUMP no se ve afectado por este error.

Solución

Para solucionar este problema, programar DUMP actividades se producen


durante la menor actividad para SQL Server.

8. Error: errores 2714 y 267 en INSERT INTO tabla temporal global

Síntomas

Una INSERT INTO una tabla temporal global de un procedimiento


almacenado puede producir los siguientes errores durante las ejecuciones de
segunda y tercer:

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

En la segunda ejecución:
• Msg 2714, Level 16, State 1
Ya hay un objeto denominado ' %. * s " en la base de datos.
En la ejecución de la tercera:
• Msg 267, Level 16, State 1
Objeto ' %. * s " no se puede encontrar.

La siguiente secuencia de comandos demuestra el problema:


DROP PROCEDURE sp_test
GO
CREATE PROCEDURE sp_test
AS
EXEC ("IF EXISTS (SELECT * FROM tempdb..sysobjects
WHERE name = '##testTable' AND type = 'u')
DROP TABLE ##testTable")
CREATE TABLE ##testTable (col INT)
INSERT INTO ##testTable SELECT 1
Cleanup:
EXEC ("IF EXISTS (SELECT * FROM tempdb..sysobjects
WHERE name = '##testTable' AND type = 'u') DROP TABLE ##testTable")
GO

EXEC sp_test / * primera ejecución * /


• This command did not return data, and it did not return any
rows.

EXEC sp_test / * segunda ejecución * /


• Msg 2714, Level 16, State 1
Ya hay un objeto denominado ##testTable en la base de datos.
EXEC sp_test / * ejecución tercera * /
• Msg 267, Level 16, State 1
Objeto '' no se puede encontrar.
Solución
Para solucionar este problema, siga uno de los siguientes procedimientos:

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

• Crear el procedimiento almacenado con la opción RECOMPILE.

-or-
• Utilice el comando Ejecutar con la instrucción INSERT INTO.

La siguiente secuencia de comandos de muestra de las soluciones


anteriores:
CREATE PROCEDURE sp_test WITH RECOMPILE
AS
EXEC ("IF EXISTS (SELECT * FROM tempdb..sysobjects
WHERE name = '##testTable' AND type = 'u')
DROP TABLE ##testTable")
CREATE TABLE ##testTable (col INT)
EXEC ('INSERT INTO ##testTable SELECT 1')
Cleanup:
EXEC ("IF EXISTS (SELECT * FROM tempdb..sysobjects
WHERE name = '##testTable' AND type = 'u') DROP TABLE ##testTable")
GO

9. Error: volver a crear un sysdepends tabla provoca que se no


válido
Síntomas
Si un procedimiento almacenado o una vista depende de una tabla que se ha
perdido, sysdepends continuará hace referencia al ID antiguo de la tabla
como un dependiente, incluso si este ID no existe más. Como resultado,
sp_depends no mostrará la dependencia de objeto correcto.
Solución

Eliminar y volver a crear el procedimiento almacenado o la vista. Las


entradas de sysdepends volverá a crearse correctamente.

10. Error: xp_sendmail con @query deja los archivos temporales en


el servidor

Síntomas

Si se ejecuta xp_sendmail con una consulta y @attach_results es true, los


archivos temporales se dejan en el directorio System32 donde está instalado
Microsoft Windows NT.

Oscar A. Lozano
40093
Regional Distrito Capital Fecha:
Sistema de Gestión Centro de Gestión de Mercados, Logística y
de la Calidad Tecnologías de la Información

MANTENIMIENTO DE EQUIPOS DE COMPUTO

Solución

1. Utilice el @attachments parámetro opcional para especificar el


archivo de nombre y sólo un archivo se dejará en el directorio
system32.
2. Utilice el @attachments parámetro opcional para especificar la ruta
de acceso archivo a un directorio temporal para la limpieza sencilla
más adelante.

Oscar A. Lozano
40093

También podría gustarte