Por un trabajo me enviaron un base de datos sobre SQL2005, y al restaurar y querer ir a los diagramas me salto el mensaje
Database diagram support objects cannot be installed because this database does not have a valid owner. To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects.
Versión en español:
Los objetos de soporte del diagrama de base de datos no se pueden instalar. Esta base de datos carece de propietario válido. Para continuar, primero use la página Archivos del diálogo Propiedades de la base de datos o la instrucción ALTER AUTHORIZATION para establecer como propietario de la base de datos un inicio de sesión válido y después agregue los objetos de soporte del diagrama de base de datos.
Solución
Buscando la solución di con la documentación de este problema, y me funciono 😉
Restaurando el nivel de compatibilidad
EXEC sp_dbcmptlevel 'database_name', '90';
La instalación de estos objetos de soporte puede generar un error en una base de datos adjuntada o restaurada a partir de otra instancia de SQL Server. Esto puede ocurrir cuando el nombre del propietario de la base de datos (almacenado en la base de datos) no es un nombre de inicio de sesión válido para la instancia de SQL Server a la que se adjunta o en la que se restaura la base de datos.
Utilice la siguiente instrucción Transact-SQL para cambiar el propietario de la base de datos a un inicio de sesión válido en la instancia de SQL Server y, después, vuelva a intentar realizar la operación de diagrama de base de datos.
ALTER AUTHORIZATION ON DATABASE::miDatabase TO valid_login
Notas (…from msdn)
- Aunque cualquier usuario con acceso a una base de datos puede crear un diagrama, una vez que se ha creado, los únicos usuarios que pueden verlo son su creador y cualquier miembro de la función db_owner.
- La propiedad de los diagramas sólo se puede transferir a los miembros de la función db_owner. Esto sólo es posible si el propietario anterior del diagrama se ha eliminado de la base de datos.
- Si se ha eliminado de la base de datos el propietario de un diagrama, el diagrama permanecerá en la base de datos hasta que el miembro de la función db_owner intente abrirlo. En ese momento, el miembro de db_owner podrá decidir si asume su propiedad.
- Para instalar el soporte del diagrama de base de datos en SQL Server Management Studio, la base de datos debe estar en el nivel de compatibilidad de base de datos de SQL Server 2005
Otra posible solución (idem la anterior)
Llegue también a este solución que no la probé que es cambiar el db owner
USE [<miDatabase>]
GO
EXEC dbo.sp_changedbowner @loginame = N’sa’, @map = false
GO
Muy explicito el nombre «Cambiar el DB owner», pero con podemos cambiar el propietario de cualquier asegurable mediante la instrucción ALTER AUTHORIZATION
Enlaces
- Libros en Pantalla de SQL 2005
Descripción de la propiedad de un diagrama de base de datos (Visual Database Tools)
http://msdn2.microsoft.com/es-ar/library/ms186345.aspx - sp_dbcmptlevel
Configura varios comportamientos de la base de datos para que sean compatibles con la versión especificada de SQL Server.
http://msdn2.microsoft.com/es-ar/library/ms178653.aspx - ALTER AUTHORIZATION
Cambia la propiedad de un asegurable.
http://msdn2.microsoft.com/es-ar/library/ms187359.aspx - sp_changedbowner
Cambia el propietario de la base de datos actual.
http://msdn2.microsoft.com/es-es/library/ms178630.aspx
Super útil
Esta documentacion es lo maximo en claridad y orientacion, para solucionar este tipo de error, que se presenta con frecuencia. Gracias a su creador por dejar orientaciones tan claras y colaborar con los desarrolladores. Este blog de Jose A. Fernandez es digno de admirar. lo felicito y escriba mas articulos.
atte. Omar E.
Te felicito… muy claro el articulo
Gracias
Jose Fernandez
Es un gran Aporte tu Solucion, me funciono a la primera
Felicitaciones
Gracias
Hector Araneda
Muchas gracias por esta informacion me resulto muy util espero que sigas ayudandonos en nuestros problemas. Probe la otra posible solucion y me funko sin problemas :>
Excelente, combinando las opiniones pude resolver el problema, asi:
Utilice la siguiente instrucción Transact-SQL para restaurar el nivel de compatibilidad
EXEC sp_dbcmptlevel ‘database_name’, ’90’;
Luego use la página Archivos del diálogo Propiedades de la base de datos o la instrucción ALTER AUTHORIZATION para establecer como propietario de la base de datos un inicio de sesión válido y después agregue los objetos de soporte del diagrama de base de datos.
puede ser
ALTER AUTHORIZATION ON DATABASE::miDatabase TO ‘sa’
Gracias Albertin por compartir tu experiencia…
excelente explicacion, muy buen aporte para este Blog, exitos en todo!!!
Muy bueno, y sobre todo los conceptos claros..
Muchas gracias por el aporte Jose Fernandez me saco de apuros… 🙂
Si me funciono, gracias 😀
Bien jugado. Funciono. Cabe resaltar q el valid_login (owner) va entre comillas 🙂
Excelente gracias por la ayuda….
pero en otra maquina ejecute el alater authorization y no funciono. Q crees q pueda estar pasando. Ejecuto EXEC sp_dbcmptlevel ‘database_name’, ’90’;???
Excelente comentario José A. Fernández me sirvio mucho ya que estoy emigrando jeje y empezando a utilizarlo
Muy buena explicación, conciso y efectivo. Gracias por la ayuda. Betza
Muy Bien, Buen Aporte. Gracias
Buen articulo, muy claro !!
Excelente amigo,
Muy buena explicación, me resulto a la primera.
Te felicito.
Miguel.
perfecto, se resolvio tan rapido como lo explicas…
gracias…
graciasssssssssssssssssssssssssss
te lo agradezco, fue una gran ayuda, estoy comenzando con el SQL05]
/*funciona */
USE [
GO
EXEC dbo.sp_changedbowner @loginame = N’sa’, @map = false
GO
Soy un poco lerdo pero donde es que tengo ke poner algo.
Gracias, brother me sirvio muchismo
Excelente la información que nos das. Muchas gracias!
Muy buen aporte, muchas gracias!!!
Magnifico!!!
el primero sirve para poder hacer diagramas osea q elimina el existente y te deja crear tus propios diagramas, el segundo permite ver el diagrama.
Gracias por esta informacion!
que buena a la primer restaurando nada mas me salio que bueno todos nos ayudamos a ser mejores por que algunos cobren mas de lo debido ,,gracias cumpa..
EXCELENTE APORTE COMPAÑERO COMO DICEN AQUI LOS USUARIOS CLARO Y FUNCIONAL
La conexión con el servidor se ha establecido correctamente, pero se ha producido un error durante el proceso
de inicio de sesión. Quisiera saber xq no me permite las conexiones remotas
gracias
Hola @Laly
Te dejo unos enlaces, pero tienes que ir a «Administrador de configuración de SQL Server», en Inicio >> Programas >> SQL Server 2008
Alli podras configuracion la conexion remota
Mas enlaces
Configuración de superficie para servicios y conexiones
http://technet.microsoft.com/es-es/library/ms188980(SQL.90).aspx
Solucionar problemas de conexión del servidor y la base de datos
http://technet.microsoft.com/es-es/library/ms156468.aspx
claro excelente! , pero no restaura el diagrama original
Buena explicación. Aunque no soy partidario de SQL Server (debo utilizarlo en el trabajo) me ayudó tu post.
Saludos.
Daniel.
Gracias, por la ayuda!!!
GRACIAS! =), me soluciono todo
Chevere tu aporte….ggracias a ello pude corregir el error…. gracias amigo
Me sirvio mucho tu idea yo hice
-clic derecho en la BD
-PROPIEDADES
– ARCHIVOS
– VALIDE EL NOMBRE DEL SERVIDOR EN OWNER
Y LISTO 🙂 GRACIAS
me sirvio che me salvaste la vida
Muy buen Aporte
funciono!!!!
muchas gracias
Excelente articulo. funciona
OMFG!!!! jaja no se a kuantas paginas entre y no mas no podia resolver el problema… entro aki y en menos de 3 minutos ya esta jalando el diagrama…. muchas grax y muy buena explikacion 😉
Excelente…..
Gracias me salvastes ya me estaba poniendo loco con ese problemita,,, +10 …
Muchas gracias me has sacado de un apuro !