Nombre de Tabla

03/03/2005 - 00:47 por Diego, Romero | Informe spam
Hola
Como estan ?

¿ Por qué si no se puede crear dos tablas con el mismo nombre en una base
de datos y si tengo
que hacer referencia a esa tabla en un SP de otra base de datos, se obliga
a colocar el nombre del propietario ?

Ejemplo: dbventas.dbo.nombretabla
¿Por qué no se puede : dbventas.nombretabla ?

gracias

Diego
 

Leer las respuestas

#1 Jorge Bustos
03/03/2005 - 01:45 | Informe spam
Te aclaro varios puntos.

1) Puedes utilizar dbventas..nombretabla si quieres ahorrarte escribir el
nombre del propietario. (Observa que hay dos punto seguidos .. )

2) Podrías tener dos tablas en la misma bd con el mismo nombre, si el
propietario es distinto. Por ejemplo,

create table dbo.a (n int)
create table manolo.a (n int)

La segunda tabla solo se crea si existe el usuario manolo en esta base de
datos, y si quien quiere crearla tiene permiso para ello (en principio el
usuario manolo y sa).

Cuando manolo realiza
create table a
por defecto estará creando manolo.a

Si lo hace el usuario sa estará creando dbo.a (por convención, en vez de
llamarse sa.a se llama dbo.a... es decir, los objetos cuyo dueño es sa se
prefijan con dbo en vez de con sa).

3) Los objetos de la base de datos se buscan por este orden:
- primero los correspondientes al usuario actual
- si no existen, se buscan los de dbo

Por ejemplo, si el usuario manolo ejecuta:
select * from a
se le devolverán las filas de manolo.a
Y si es cualquier otro usuario se le devolverán las filas de dbo.a

4) Los nombrs completos de objetos de base de datos son:
servidor.bd.propietario.objeto

Si se omite el propietario ya te he comentado como se resuelve
Si se omite el servidor se usa el actual
Si se omite el nombre de bd se usa la actual (la que se haya seleccionado
con USE o la que corresponda al usuario por defecto si no se emplea USE)

En SQL Server 2005, por temas asociados a los permisos de usuario, la
utilización del propietario tomará importancia en muchos casos para
simplificar la gestión de la seguridad de la base de datos, cuando esta sea
compleja.

Por el momento mi consejo es que siempre crees las tablas como
pertenecientes a dbo.

Salu2,
Jorge.

"Diego, Romero" wrote in message
news:
Hola
Como estan ?

¿ Por qué si no se puede crear dos tablas con el mismo nombre en una base
de datos y si tengo
que hacer referencia a esa tabla en un SP de otra base de datos, se


obliga
a colocar el nombre del propietario ?

Ejemplo: dbventas.dbo.nombretabla
¿Por qué no se puede : dbventas.nombretabla ?

gracias

Diego


Preguntas similares