2009-08-27 12 views
10

Hace un tiempo configuré una base de datos bajo SQL Server 2008 llamada myDB en Windows XP, luego en Inicios de sesión debajo del servidor, hice clic en Propiedades en mi computadora nombre de usuario COMP23/Andrew y asigné myDB base de datos a esto utilizando dbowner como sus derechos.Problema de inicio de sesión de usuario en SQL Server 2008

Luego cloné esta instalación de XP como una copia de seguridad, instalé Visa, dándome cuenta de que no quería que Vista volviera a crear mi copia de XP original en la misma máquina. Sin embargo, ¡el mapeo DB se ha vuelto realmente confuso! Básicamente, bajo el nombre de usuario del servidor COMP23 \ Andrew, dice que está mapeado a myDB, pero cuando hago clic en myDB y veo sus usuarios, no está allí. Creo que perdió su mapeo SID porque piensa que es una máquina nueva.

Bajo el inicio de sesión del servidor COMP23 \ Andrew No puedo desmarcar la asignación a myDB ya que cuando lo hago dice "No se puede eliminar el usuario dbo". Tampoco puedo alterar el usuario dbo, no me lo permite. ¡Pero tampoco puedo hacer que el usuario aparezca bajo los usuarios de myDB! ¡Lo que significa que no puedo iniciar sesión a través del archivo de configuración de mi sitio web (asp.net web.config)! Cuando inicio sesión solo dice No se puede abrir la base de datos "myDB" solicitada por el inicio de sesión. El inicio de sesión falló. Error de inicio de sesión para el usuario 'COMP23 \ ASPNET'

¿Alguna idea? ¿Cómo puedo reasignar esto correctamente? Incluso intenté reinstalar SQL Server 2008 pero el nombre de la computadora todavía está mapeado en la base de datos.

Respuesta

14

Debido DBO es el propietario de la base de datos, la asignación debe ser cambiado al cambiar el propietario de la base de datos:

ALTER AUTHORIZATION ON database::[<yourdb>] TO [sa]; 
+0

Esta solución funciona para mí. Gracias Remus! Tuve esta situación: domain \ oldusr ya no funciona en nuestra empresa. domain \ oldusr mapeado como "dbo" (ver debajo de mapeos de usuario) para varios DB. Esto causaba problemas cuando intentaba usar el asistente Tareas> "Copiar base de datos" para copiar el DB de un equipo a otro. Recibí este error: no puedo encontrar el 'dominio \ oldusr' principal porque no existe o no tienes permiso. Al ejecutar la consulta anterior, se eliminó la asignación de usuario (como dbo) de ese DB. Así que al final pude copiar el DB usando las Tareas> Copiar Base de Datos. – firepol

0

Ya que menciona el problema de asignación de SID, ¿Ha intentado utilizar sp_change_users_login? Use la opción de ajuste automático para reasignar su inicio de sesión al de la base de datos.

Para su ejemplo anterior se debe ejecutar el siguiente mientras está conectado a la base de datos

EXEC `sp_change_users_login` @Action = 'autofix', @LoginName = 'COMP23\ASPNET' 
2

En primer lugar, no se puede tener comillas que rodean el nombre del procedimiento almacenado. En segundo lugar, no es autofix, sino auto_fix.

Por último, una vez que se hacen las correcciones, se obtiene este mensaje de error:

Msg 15600, Level 15, State 1, Procedure sp_change_users_login, Line 181 An invalid parameter or option was specified for procedure 'sys.sp_change_users_login'.

cuando se ejecuta este comando:

EXEC sp_change_users_login @Action = 'auto_fix', @LoginName = '<your username>' 
0
USE [Database] 
GO 

ALTER USER [dbo] WITH NAME=[username] 
GO 

sp_changedbowner 'sa' 
GO 
+0

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (http://meta.stackexchange.com/questions/114762/explaining-entirely-coded-based-answers) realmente ayuda a mejorar la calidad de su enviar. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. –

Cuestiones relacionadas