Usuario no accede a base restaurada

12/03/2008 - 14:49 por Mono | Informe spam
Hola a todos, tengo la siguiente situación:


Sobre un SQL Server 2000 Enterprise restauré una base de datos ya existente
en otro SQL Server 2000 Enterprise
La base se accede con un usuario de SQL que llamaré "usu"
Ni bien restauro, el usuario "usu" aparece en la lista de usuarios de la
base recién restaurada pero no en la lista de logins (sección "secutity" de
la registración del servidor)
Intento crear el login tildando el acceso a la base que restauraday cuando
lo hago "Error 21002": [SQL-DMO] user 'usu' already exists"
Dado el error, voy a la base de datos e intento borrar el ususrio "usu" pero
cuando intento borrarlo me aparece el mensaje "The selected user cannot be
dropped because the user owns objects"
Voy a la lista de tablas y veo que efectivamente muchas de ellas tienen al
usuario 'usu' como owner
Todas estas operaciones las realizo desde el Enterprise Manager

¿Qué puedo hacer? Yo lo único que necesito es poder acceder a la base con
una aplicación ASP con el usuario 'usu'.

Gracias
Alejandro

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
12/03/2008 - 15:35 | Informe spam
Ejecute este script, proporcione los valores adecuados a su caso:

USE MiBaseDeDatos
GO

EXEC sp_change_users_login 'Auto_Fix', 'usu', 'loginParaUsu',
'passwordParaLoginUsu'


Luego díganos si funcionó correctamente.
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Mono" wrote:

Hola a todos, tengo la siguiente situación:


Sobre un SQL Server 2000 Enterprise restauré una base de datos ya existente
en otro SQL Server 2000 Enterprise
La base se accede con un usuario de SQL que llamaré "usu"
Ni bien restauro, el usuario "usu" aparece en la lista de usuarios de la
base recién restaurada pero no en la lista de logins (sección "secutity" de
la registración del servidor)
Intento crear el login tildando el acceso a la base que restauraday cuando
lo hago "Error 21002": [SQL-DMO] user 'usu' already exists"
Dado el error, voy a la base de datos e intento borrar el ususrio "usu" pero
cuando intento borrarlo me aparece el mensaje "The selected user cannot be
dropped because the user owns objects"
Voy a la lista de tablas y veo que efectivamente muchas de ellas tienen al
usuario 'usu' como owner
Todas estas operaciones las realizo desde el Enterprise Manager

¿Qué puedo hacer? Yo lo único que necesito es poder acceder a la base con
una aplicación ASP con el usuario 'usu'.

Gracias
Alejandro



Respuesta Responder a este mensaje
#2 Gux (MVP)
12/03/2008 - 16:27 | Informe spam
Gracias Mono por compartir las modificaciones.

La información documentada del procedimiento está en los Books Online (BOL):

sp_change_users_login
http://msdn2.microsoft.com/en-us/library/aa259633(SQL.80).aspx

En la documentación observo un ejemplo donde se crea el login para el
usuario Mary, proporcionando NULL en el tercer parámetro. En mi ejemplo
original proporcioné el nombre del login en dicho parámetro.

USE pubs
go
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-36'
go



Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Mono" wrote:

Gracias Gustavo, ha funcionado pero con ciertas modificaciones quiero
compartir con el grupo:

La instrucción
EXEC sp_change_users_login 'Auto_Fix','usu', 'loginParaUsu',
'passwordParaLoginUsu'
devolvió el siguiente error:
Server: Msg 8144, Level 16, State 2, Procedure sp_change_users_login, Line 0
Procedure or function sp_change_users_login has too many arguments
specified.

Hice un
sp_helptext 'sp_change_users_login'
sobre la base master y vi que comienza con los siguientes parámetros:
CREATE PROCEDURE sp_change_users_login
@Action varchar(10) -- REPORT / UPDATE_ONE /
AUTO_FIX
,@UserNamePattern sysname = Null
,@LoginName sysname = Null
AS

Lugo ejecuté lo mismo sin la pass, dado que no la veía en los parámetros:
EXEC sp_change_users_login 'Auto_Fix','usu', 'loginParaUsu'
obtuve, entonces el siguiente error:
Server: Msg 15290, Level 16, State 1, Procedure sp_change_users_login, Line
136
Terminating this procedure. The Action 'Auto_Fix' is incompatible with the
other parameter values ('usu', 'loginParaUsu').

Finalmente ejecuté

EXEC sp_change_users_login 'Auto_Fix','usu'
y obtuve el resultado deseado con la siguiente respuesta del servidor:
The number of orphaned users fixed by updating users was 0.
The number of orphaned users fixed by adding new logins and then updating
users was 0.

¿Porqué? No lo sé, me documentaré más acerca del comando
sp_change_users_login y les cuento.

Gustavo, si usted tiene más documentación al respecto me encantaría leerla.

Gracias!!!
"Gux (MVP)" wrote in message
news:
> Ejecute este script, proporcione los valores adecuados a su caso:
>
> USE MiBaseDeDatos
> GO
>
> EXEC sp_change_users_login 'Auto_Fix', 'usu', 'loginParaUsu',
> 'passwordParaLoginUsu'
>
>
> Luego díganos si funcionó correctamente.
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/profile/gux
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Mono" wrote:
>
>> Hola a todos, tengo la siguiente situación:
>>
>>
>> Sobre un SQL Server 2000 Enterprise restauré una base de datos ya
>> existente
>> en otro SQL Server 2000 Enterprise
>> La base se accede con un usuario de SQL que llamaré "usu"
>> Ni bien restauro, el usuario "usu" aparece en la lista de usuarios de la
>> base recién restaurada pero no en la lista de logins (sección "secutity"
>> de
>> la registración del servidor)
>> Intento crear el login tildando el acceso a la base que restauraday
>> cuando
>> lo hago "Error 21002": [SQL-DMO] user 'usu' already exists"
>> Dado el error, voy a la base de datos e intento borrar el ususrio "usu"
>> pero
>> cuando intento borrarlo me aparece el mensaje "The selected user cannot
>> be
>> dropped because the user owns objects"
>> Voy a la lista de tablas y veo que efectivamente muchas de ellas tienen
>> al
>> usuario 'usu' como owner
>> Todas estas operaciones las realizo desde el Enterprise Manager
>>
>> ¿Qué puedo hacer? Yo lo único que necesito es poder acceder a la base con
>> una aplicación ASP con el usuario 'usu'.
>>
>> Gracias
>> Alejandro
>>
>>
>>



Respuesta Responder a este mensaje
#3 Mono
12/03/2008 - 17:01 | Informe spam
Gracias Gustavo, ha funcionado pero con ciertas modificaciones quiero
compartir con el grupo:

La instrucción
EXEC sp_change_users_login 'Auto_Fix','usu', 'loginParaUsu',
'passwordParaLoginUsu'
devolvió el siguiente error:
Server: Msg 8144, Level 16, State 2, Procedure sp_change_users_login, Line 0
Procedure or function sp_change_users_login has too many arguments
specified.

Hice un
sp_helptext 'sp_change_users_login'
sobre la base master y vi que comienza con los siguientes parámetros:
CREATE PROCEDURE sp_change_users_login
@Action varchar(10) -- REPORT / UPDATE_ONE /
AUTO_FIX
,@UserNamePattern sysname = Null
,@LoginName sysname = Null
AS

Lugo ejecuté lo mismo sin la pass, dado que no la veía en los parámetros:
EXEC sp_change_users_login 'Auto_Fix','usu', 'loginParaUsu'
obtuve, entonces el siguiente error:
Server: Msg 15290, Level 16, State 1, Procedure sp_change_users_login, Line
136
Terminating this procedure. The Action 'Auto_Fix' is incompatible with the
other parameter values ('usu', 'loginParaUsu').

Finalmente ejecuté

EXEC sp_change_users_login 'Auto_Fix','usu'
y obtuve el resultado deseado con la siguiente respuesta del servidor:
The number of orphaned users fixed by updating users was 0.
The number of orphaned users fixed by adding new logins and then updating
users was 0.

¿Porqué? No lo sé, me documentaré más acerca del comando
sp_change_users_login y les cuento.

Gustavo, si usted tiene más documentación al respecto me encantaría leerla.

Gracias!!!
"Gux (MVP)" wrote in message
news:
Ejecute este script, proporcione los valores adecuados a su caso:

USE MiBaseDeDatos
GO

EXEC sp_change_users_login 'Auto_Fix', 'usu', 'loginParaUsu',
'passwordParaLoginUsu'


Luego díganos si funcionó correctamente.
Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Mono" wrote:

Hola a todos, tengo la siguiente situación:


Sobre un SQL Server 2000 Enterprise restauré una base de datos ya
existente
en otro SQL Server 2000 Enterprise
La base se accede con un usuario de SQL que llamaré "usu"
Ni bien restauro, el usuario "usu" aparece en la lista de usuarios de la
base recién restaurada pero no en la lista de logins (sección "secutity"
de
la registración del servidor)
Intento crear el login tildando el acceso a la base que restauraday
cuando
lo hago "Error 21002": [SQL-DMO] user 'usu' already exists"
Dado el error, voy a la base de datos e intento borrar el ususrio "usu"
pero
cuando intento borrarlo me aparece el mensaje "The selected user cannot
be
dropped because the user owns objects"
Voy a la lista de tablas y veo que efectivamente muchas de ellas tienen
al
usuario 'usu' como owner
Todas estas operaciones las realizo desde el Enterprise Manager

¿Qué puedo hacer? Yo lo único que necesito es poder acceder a la base con
una aplicación ASP con el usuario 'usu'.

Gracias
Alejandro



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