Cambiar propietario database

27/06/2006 - 19:59 por TR | Informe spam
Hola,

Tengo una base de datos llamada "database1" que tiene una serie de
tablas cuyo propietario es "usuario1". En usuarios de la database, tengo
el usurio "dbo" y el usuario "usuario1".

Cuando hago un select desde el Analizador de Consultas tengo que poner
siempre el usuario "usuario1" delante de la tabla, es decir:

select * from usuario1.tabla1

Yo lo que quiero es no poner "usuario1", que funcione tan solo poniendo:

select * from tabla1

Cuando el usuario "dbo" es propietario de las tablas esta última
consulta es correct.

Me gustaria saber como cambiar el usuario de las tablas para que el
propietario sea "dbo".

Alguien me puede ayudar?... es posible lo que expongo sin necesidad de
cambiar el propietario?

Un cordial saludo y gracias anticipadas.

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
27/06/2006 - 20:48 | Informe spam
TR,

Yo use la cuenta que pusites de ejemplo en el mensaje.

> and TABLE_SCHEMA = 'usuario1'



Cambia el valor "usuario1" por el nombre de la cuenta a la que te refieres.


AMB


"TR" wrote:

Gracias Alejandro,

He ejecutado pero sigue teniendo el mismo propietario. No se si hay que
cambiar algo en el procedimiento que me has pasado,

Saludos,

Alejandro Mesa escribió:
> TR,
>
>
>>Yo lo que quiero es no poner "usuario1", que funcione tan solo poniendo:
>>
>>select * from tabla1
>
>
> 1 - Puedes hacer login en Query Analyzer usando "usuario1".
> 2 - Puedes cambiar el dueño del objeto usando el procedimiento almacenado
> sp_changeobjectowner
>
> Ejemplo:
>
> Login en QA usando una cuenta que sea miembro de sysadmin y ejecuta:
>
> declare @sql nvarchar(4000)
> declare @ts sysname
> declare @tn sysname
> declare my_cursor cursor
> local
> fast_forward
> for
> select
> TABLE_SCHEMA,
> TABLE_NAME
> from
> INFORMATION_SCHEMA.TABLES
> where
> TABLE_TYPE = 'BASE TABLE'
> and TABLE_SCHEMA = 'usuario1'
>
> open my_cursor
>
> while 1 = 1
> begin
> fetch next from my_cursor into @ts, @tn
>
> if @@error != 0 or @@fetch_status != 0 break
>
> set @sql = N'EXEC sp_changeobjectowner ''' + @ts + '.' + @tn + ''',
> @newowner'
>
> execute sp_executesql @sql, N'@newowner sysname', 'dbo'
> end
>
> close my_cursor
> deallocate my_cursor
> go
>
>
> AMB
>
> "TR" wrote:
>
>
>>Hola,
>>
>>Tengo una base de datos llamada "database1" que tiene una serie de
>>tablas cuyo propietario es "usuario1". En usuarios de la database, tengo
>>el usurio "dbo" y el usuario "usuario1".
>>
>>Cuando hago un select desde el Analizador de Consultas tengo que poner
>>siempre el usuario "usuario1" delante de la tabla, es decir:
>>
>>select * from usuario1.tabla1
>>
>>Yo lo que quiero es no poner "usuario1", que funcione tan solo poniendo:
>>
>>select * from tabla1
>>
>>Cuando el usuario "dbo" es propietario de las tablas esta última
>>consulta es correct.
>>
>>Me gustaria saber como cambiar el usuario de las tablas para que el
>>propietario sea "dbo".
>>
>>Alguien me puede ayudar?... es posible lo que expongo sin necesidad de
>>cambiar el propietario?
>>
>>Un cordial saludo y gracias anticipadas.
>>
>>
>


Respuesta Responder a este mensaje
#7 Jorge Gonzalez
27/06/2006 - 21:19 | Informe spam
TR,

Antes que nada te comento que un conjunto de objetos que pertenecen a un
usuario específico forman lo que se conoce como un Schema. En SQL Server
2000 este concepto no estaba completamente implementado. En SQL Server 2005
ya ha sido implementado de acuerdo a como lo define ANSI. El concepto es muy
poderoso para ciertas soluciones. Por esto te recomiendo documentar un poco
sobre Schemas en los BOL de 2005 para que el futuro se tome la desición del
ownership de objetos de la base de datos sobre una base científica.

En principio, si no usarás Schemas, lo más recomendable es que el dueño de
los objectos sea DBO como bien lo mencionas. De esta forma te evitarás tener
que calificar los objectos a través del usuario dueño.

para cambiar el ownership de un objeto utiliza:

sp_changeobjectowner 'Usuario.NombreObjeto', 'NuevoDueño'

Saludos

Jorge González


"TR" escribió en el mensaje news:
Hola,

Tengo una base de datos llamada "database1" que tiene una serie de tablas
cuyo propietario es "usuario1". En usuarios de la database, tengo el
usurio "dbo" y el usuario "usuario1".

Cuando hago un select desde el Analizador de Consultas tengo que poner
siempre el usuario "usuario1" delante de la tabla, es decir:

select * from usuario1.tabla1

Yo lo que quiero es no poner "usuario1", que funcione tan solo poniendo:

select * from tabla1

Cuando el usuario "dbo" es propietario de las tablas esta última consulta
es correct.

Me gustaria saber como cambiar el usuario de las tablas para que el
propietario sea "dbo".

Alguien me puede ayudar?... es posible lo que expongo sin necesidad de
cambiar el propietario?

Un cordial saludo y gracias anticipadas.

Respuesta Responder a este mensaje
#8 TR
27/06/2006 - 22:59 | Informe spam
Correcto, funciona perfectamente.

Muchas gracias Alejandro :)

Alejandro Mesa escribió:
TR,

Yo use la cuenta que pusites de ejemplo en el mensaje.


and TABLE_SCHEMA = 'usuario1'






Cambia el valor "usuario1" por el nombre de la cuenta a la que te refieres.


AMB


"TR" wrote:


Gracias Alejandro,

He ejecutado pero sigue teniendo el mismo propietario. No se si hay que
cambiar algo en el procedimiento que me has pasado,

Saludos,

Alejandro Mesa escribió:

TR,



Yo lo que quiero es no poner "usuario1", que funcione tan solo poniendo:

select * from tabla1




1 - Puedes hacer login en Query Analyzer usando "usuario1".
2 - Puedes cambiar el dueño del objeto usando el procedimiento almacenado
sp_changeobjectowner

Ejemplo:

Login en QA usando una cuenta que sea miembro de sysadmin y ejecuta:

declare @sql nvarchar(4000)
declare @ts sysname
declare @tn sysname
declare my_cursor cursor
local
fast_forward
for
select
TABLE_SCHEMA,
TABLE_NAME
from
INFORMATION_SCHEMA.TABLES
where
TABLE_TYPE = 'BASE TABLE'
and TABLE_SCHEMA = 'usuario1'

open my_cursor

while 1 = 1
begin
fetch next from my_cursor into @ts, @tn

if @@error != 0 or @@fetch_status != 0 break

set @sql = N'EXEC sp_changeobjectowner ''' + @ts + '.' + @tn + ''',
@newowner'

execute sp_executesql @sql, N'@newowner sysname', 'dbo'
end

close my_cursor
deallocate my_cursor
go


AMB

"TR" wrote:



Hola,

Tengo una base de datos llamada "database1" que tiene una serie de
tablas cuyo propietario es "usuario1". En usuarios de la database, tengo
el usurio "dbo" y el usuario "usuario1".

Cuando hago un select desde el Analizador de Consultas tengo que poner
siempre el usuario "usuario1" delante de la tabla, es decir:

select * from usuario1.tabla1

Yo lo que quiero es no poner "usuario1", que funcione tan solo poniendo:

select * from tabla1

Cuando el usuario "dbo" es propietario de las tablas esta última
consulta es correct.

Me gustaria saber como cambiar el usuario de las tablas para que el
propietario sea "dbo".

Alguien me puede ayudar?... es posible lo que expongo sin necesidad de
cambiar el propietario?

Un cordial saludo y gracias anticipadas.








Respuesta Responder a este mensaje
#9 Maxi
28/06/2006 - 02:07 | Informe spam
Hola, TR en tus libros on line tienes toda la infomacion para usar esta
instruccion



Salu2

Micrsoft MVP SQL Server
www.sqlgururs.org


"TR" wrote in message news:
Hola Maxi,

Puedes explicarme un poco mejor... soy un poco novato en sql server

Gracias :)

Maxi escribió:
Hola, revisa el procedimiento almacendado:

sp_changeobjectowner




Respuesta Responder a este mensaje
#10 ulises
28/06/2006 - 06:31 | Informe spam
Una forma rápida podría ser :

EXEC sp_MSforeachtable "sp_changeobjectowner '?', 'dbo'"

aunque obtendrías mensajes de error por todas las tablas que ya tengan como
owner a dbo ... pero cambiaría las demás.

Saludos,
Ulises

Alejandro Mesa wrote:

TR,

Yo lo que quiero es no poner "usuario1", que funcione tan solo poniendo:

select * from tabla1



1 - Puedes hacer login en Query Analyzer usando "usuario1".
2 - Puedes cambiar el dueño del objeto usando el procedimiento almacenado
sp_changeobjectowner

Ejemplo:

Login en QA usando una cuenta que sea miembro de sysadmin y ejecuta:

declare @sql nvarchar(4000)
declare @ts sysname
declare @tn sysname
declare my_cursor cursor
local
fast_forward
for
select
TABLE_SCHEMA,
TABLE_NAME
from
INFORMATION_SCHEMA.TABLES
where
TABLE_TYPE = 'BASE TABLE'
and TABLE_SCHEMA = 'usuario1'

open my_cursor

while 1 = 1
begin
fetch next from my_cursor into @ts, @tn

if @@error != 0 or @@fetch_status != 0 break

set @sql = N'EXEC sp_changeobjectowner ''' + @ts + '.' + @tn + ''',
@newowner'

execute sp_executesql @sql, N'@newowner sysname', 'dbo'
end

close my_cursor
deallocate my_cursor
go


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