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

Preguntas similare

Leer las respuestas

#6 Maxi
04/03/2005 - 16:44 | Informe spam
Hola, aja, pues es una opinion, yo creo que como en todo, hay muchas formas
de hacer las cosas pero hay buenas practicas de programacion en todo,
Sqlserver no es un caso aislado a esto


Salu2
Maxi


"Jorge Bustos" escribió en el mensaje
news:eSACA$
Supongo que es un tema algo confuso, lo que se puede, lo que no se puede,
lo
que se debe, lo que no se debe... En fin, es lo mismo. A veces la cantidad
de modos posibles de hacer una cosa es abrumante, y lo más recomendable es
respetar siempre los mismos criterios, y si son sencillos mejor.

Salu2,
Jorge


Respuesta Responder a este mensaje
#7 Diego, Romero
04/03/2005 - 21:45 | Informe spam
Gracias por sus aclaraciones
Pues no sabia que se podian crear dos tablas con el mismo nombre <>
propietario.
Las tablas siempre las creo con dbo, si no que en caso de que mi aplicación
se instale en otro servidor y el funcionario de soporte creo las bases de
datos con otro propietario, me obligaria a cambiar los procedimientos
almacenados donde nombro la tabla como : dbo.nombretabla.


Diego


"Jorge Bustos" escribió en el mensaje
news:
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
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida