Error al cambiar la propiedad de la base de datos desde la página de archivos en el cuadro de diálogo de propiedades de la base de datos

10

He restaurado una base de datos y he creado un nuevo usuario (el mismo usuario desde el que he iniciado sesión) como db_owner. Ahora cuando quería ver el diagrama de la base de datos recibí un error

Los objetos de soporte del Diagrama de base de datos no se pueden instalar porque esta base de datos no tiene un propietario válido. Para continuar, primero use la página de archivos del cuadro de diálogo Propiedades de la base de datos o la instrucción Alter Authorization para configurar el propietario de la base de datos a un inicio de sesión válido, luego agregue los objetos de soporte de la base de datos

Ahora, cuando intenté cambiar la propiedad desde la página Archivos de Propiedades de la base de datos, recibo un error como

El propietario del conjunto falló para la base de datos 'ABC'. (Microsoft.SqlServer.SMO) Información adicional: se produjo una excepción en SMO El nuevo propietario de la base de datos propuesto James-PC \ James se asigna como usuario James en esta base de datos. Nombre del parámetro: James-PC \ James "

Ayúdenme a solucionar el problema para poder ver los diagramas de la base de datos en esta computadora después de restaurar la copia de seguridad de la base de datos desde otro sistema.

usuario2826073
fuente

Respuestas:

8

El propietario de la base de datos es el inicio de sesión en sys.server_principals que posee la base de datos, según lo define su SID. Después de una restauración, es posible que el inicio de sesión que se utilizó para restaurar la base de datos no sea el inicio de sesión que era el propietario anterior de la base de datos. (Esto es aún más probable que ocurra cuando la base de datos se mueve entre servidores).

Por lo tanto, podría haber tres configuraciones con las que tiene problemas

  1. La base de datos owner_sid no es igual a la base de datos db_owner sid. Puede comparar esto para la base de datos ABC por:

    SELECCIONE owner_sid FROM sys.databases donde name = 'ABC';

    SELECCIONE el sid de ABC.sys.database_principals WHERE name = 'dbo';

  2. A continuación, recibirá un mensaje que dice que la base de datos propuesta owner_sid también existe como usuario en sys.database_principals. Sabemos esto por el mensaje de error sobre el mapeo del propietario propuesto.

Entonces tus pasos son:

 USE ABC;
 DROP USER James;
 ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];

Descartó el usuario que no es necesario, ya que lo está convirtiendo en el dbo. Una vez que eso está fuera del camino, entonces su inicio de sesión se puede convertir en el propietario de la base de datos.

EDITAR: También puede usar SSMS para eliminar al usuario James de la base de datos ABC. Luego, puede volver a la pestaña Archivo de propiedades de la base de datos para establecer el propietario de la base de datos. (Lo siento, tiendo a pensar en guiones).

RLF
fuente
1
Eso es interesante, en Management Studio el inicio de sesión que se hizo un dbo no aparece en YOUR_DB / Security / Users,
joedotnot
-3
  1. haga clic derecho en la base de datos
  2. propiedades
  3. seleccione archivos
  4. propietario correcto / establecido (a su pc \ you, o explore y seleccione haciendo clic en "...")

esto funcionó para mí en SQL Server Management Studio v17.1

usuario127505
fuente
2
Creo que exactamente esto no funcionó para ellos.
dezso