Problema con logins y usuarios

Mi problema es con una base de datos sql server 2000, la cual copié directamente desde una carpeta de un servidor que no está funcionando nada bien, y por tanto no pude realizar un backup.
Copiados los archivos de la base, attacho la misma en otro servidor y hete aquí el problema: Tengo un login en la instancia de sql llamado teléfonos, el cual es usado por el usuario teléfonos de algunas bases de datos existente.
Cuando attacho la base en cuestión Teles, tiene como propietario un usuario Teléfonos, el cual en la base que está en el servidor que se rompió, existía y funcionaba correctamente.
Al finalizar, figura que el dueño de la base de datos Teles es Teléfonos, pero en los login name de la instancia de sql, en el login Teléfonos, no figura que tenga asociada la base de datos Teles. Tiene otras dos que ya estaban asociadas bien, pero a esta cuando se la intento asociar, dice que el usuario ya existe en la base.
El problema es que no puedo quitar el usuario Teléfonos de la base que attacho, me da error porque es dbo, ni le puedo quitar los permisos...
¿Cómo puedo hacer para asociar al login Teléfonos, la base Teles, siendo que ya figura en esta base un usuario Teléfonos como propietario? Aclaro que así, el usuario Teléfonos no puede, aunque diga que es propietario, manejar la base de datos Teles.
Espero que puedan ayudarme, realmente lo intenté de varias maneras y no logro dar en el clavo!

1 respuesta

Respuesta
1
Jajaja, esa es una de las chanchaditas que tienen sybase/sqlserver. 
Existe una tabla de logins en la master y una tabla de users en cada base de datos, y se relaciona sysusers. Suid (de cada db) con el master.. sysxlogins. Suid; el problema es cuando "enchufas" una base de datos de otro servidor que puede tener cambiados los suids. En cada base de datos existe un usuario oculto que es el dbo y que se mapea al propietario de la base de datos.
Si te dice que ya existe el usuario debe ser porque tiene mapeado alguno que no es o bien como el login tiene a esa base de datos como defaultdb ya se hizo el mapeo a (Teléfonos como user pero sin privilegios).
Fíjate que usuario tiene asociado el login con sp_helplogins 'telefonos', si tiene algo raro intenta hacer sp_dropalias teléfonos (con la base de datos Teles).
Si no tiene nada o tiene el user teléfonos, intenta hacer sp_defaultdb Teléfonos, master y verifica que no tenga asociado ningún usuario en la base de datos Teles.
Después puedes hacer sp_changedbowner 'Telefonos' (usando la base teles).
Saludos y espero que te sirva esto.
Demoré un poco en cerrar el tema porque estuve demasiado apurada estos días.
Realmente la solución me fue muy útil y voy a tenerla en cuenta para futuros inconvenientes de este tipo. Además, intentaré investigar más acerca de los sp que vienen incluidos, ya que veo que tienen utilidades muy buenas que no conocía.
Mil gracias! :) Me fue de muchísima ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas