Error en Trace de SQL

16/11/2004 - 23:29 por Natacha | Informe spam
Hola

Les pido el favor me colaboren...

Tengo un servidor en producción con 200 usuarios concurrentes, hago un
profiler para ver como se está comportando y encuentro que frecuentemente
genera estas exepciones.

Error: 16954, Severity: 10, State: 1
Error: 208, Severity: 16, State: 0

Les pido el favor me indiquen si los conocen y donde puedo obtener
documentación.

Muchas gracias
 

Leer las respuestas

#1 Carlo Sorrel
16/11/2004 - 23:40 | Informe spam
Natacha, de los B.O.L saque esto:

Error 208
Nivel de gravedad 16
Texto del mensaje
El nombre de objeto '%1!' no es válido.

Explicación
Este error se produce al hacer referencia a un objeto que no existe. Si el
objeto existe, puede ser necesario incluir el nombre del propietario en el
nombre del objeto.

Si el objeto no pertenece al usuario que intenta obtener acceso a él ni
tampoco pertenece al propietario de la base de datos, todas las referencias
al objeto deben incluir el nombre del propietario. Por ejemplo, si user1
crea una tabla llamada test, los demás usuarios deben utilizar el nombre
user1.test cuando hagan referencia a la tabla.

La convención de nombres de Microsoft® SQL ServerT para objetos de base de
datos es la siguiente:

[[[server_name.][database_name].][owner_name].]object_name

El valor predeterminado de server_name es el servidor actual y el valor
predeterminado de database_name es la base de datos actual. El valor
predeterminado de owner_name es el usuario actual. Como owner_name forma
parte del nombre del objeto, es posible que dos usuarios diferentes tengan
tablas con el mismo nombre en la misma base de datos (por ejemplo,
user1.test y user2.test). Para obtener más información acerca de las
convenciones de nombres, consulte Convenciones de sintaxis de Transact-SQL.

Este mensaje también se puede producir si se hace referencia a una tabla
temporal creada con una instrucción EXECUTE.

Acción
El procedimiento para controlar este error depende de los datos que conozca
del objeto indicado en el texto del mensaje de error.

También se deben establecer los permisos apropiados para permitir el acceso
a un objeto. Si no se establecen estos permisos, se produce el error 229 ó
230.

Si no sabe quién es el propietario del objeto
a.. Ejecute sp_help sin parámetros para mostrar el propietario del objeto.
O bien

b.. Consulte las Vistas de esquema de información si el objeto es una
tabla o una vista para determinar el propietario y el tipo del objeto. Si el
objeto no es una tabla o una vista, consulte la tabla del sistema sysobjects
para determinar el propietario y el tipo del objeto.
Por ejemplo, para determinar el propietario y el tipo de un objeto
denominado table_1, ejecute la siguiente instrucción:

USE master
GO
SELECT TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'table_1'
GO
Si la consulta no devuelve filas, el objeto reside en una base de datos
diferente o no existe.

Si no es el propietario del objeto en cuestión
a.. Incluya el propietario del objeto en el nombre del objeto. Por
ejemplo:
SELECT *
FROM user1.table_1
Aunque el uso de nombres de objeto completos elimina este problema, recuerde
que al incluir el nombre de objeto completo en una aplicación se puede
complicar el mantenimiento de la misma. Por ejemplo, si todas las
referencias a una tabla incluyen el nombre de la base de datos, cambiar el
nombre de la base de datos podría resultar difícil.

O bien

b.. Haga que el propietario de la base de datos cree el objeto. Si el
propietario de la base de datos crea el objeto, cualquier usuario puede
encontrar el objeto sin especificar el propietario. Sin embargo, las tablas
temporales residen en tempdb y se quitan automáticamente cuando finaliza el
proceso de usuario o la conexión de servidor que las creó. Los usuarios no
pueden compartir tablas temporales, aunque las haya creado el propietario de
la base de datos.
Si el objeto no reside en la base de datos
a.. Cambie el contexto a la base de datos correcta con la instrucción USE.
Por ejemplo:
USE database_1
O bien

b.. Califique el nombre del objeto con el nombre de la base de datos. Por
ejemplo:
SELECT *
FROM database_1.user1.table_1
Si usted es el propietario del objeto o éste pertenece al propietario de la
base de datos, no se necesita el nombre del propietario. Por ejemplo:

SELECT *
FROM database_1..table_1
Si se hace referencia a una tabla temporal creada con la instrucción EXECUTE
a.. Si debe utilizar la instrucción EXECUTE para crear una tabla temporal,
créela como tabla temporal global con la sintaxis ##tablename.
Atte.,
Carlo Sorrel
MCP SQLServer


"Natacha" escribió en el mensaje
news:
Hola

Les pido el favor me colaboren...

Tengo un servidor en producción con 200 usuarios concurrentes, hago un
profiler para ver como se está comportando y encuentro que frecuentemente
genera estas exepciones.

Error: 16954, Severity: 10, State: 1
Error: 208, Severity: 16, State: 0

Les pido el favor me indiquen si los conocen y donde puedo obtener
documentación.

Muchas gracias

Preguntas similares