Necesito cambiar el propietario de un diagrama de base de datos en SQL Server 2005. Actualmente es propiedad de mí (domain \ username.diagramName) y me gustaría cambiarlo para que sea propiedad por dbo (dbo.diagramName). Pensé que podría usar sp_changeobjectowner, pero creo que es solo para tablas, procedimientos almacenados, etc. Creo que esto es bastante fácil, simplemente no he podido encontrar nada a través de una búsqueda en Google.Cambiar Propietario del Diagrama de Base de Datos en SQL Server 2005
Respuesta
Al final, tuve que quitar que los usuarios del esquema a continuación, ejecute la siguiente actualización ...
-- to identify the diagram id, name, & owner
select *
from dbo.sysdiagrams
-- to manually change the owner of a diagram
-- note: i derived that the principal_id =1 for dbo from above query
update
dbo.sysdiagrams set principal_id =1 where diagram_id = 1
que terminó siendo la ayuda que necesitaba de un DBA aquí en el campus.
Este artículo indica que tendrá que eliminarse como usuario de la base de datos. Abrelo con el usuario que elijas.
http://msdn.microsoft.com/en-us/library/ms171972(VS.80).aspx
Cuando intento eliminar al usuario obtengo ... TITLE: Microsoft SQL Server Management Studio Falló el fallo para el usuario 'domain \ username'. (Microsoft.SqlServer.Smo) Para obtener ayuda, haga clic en: http://bit.ly/gHA9 INFORMACIÓN ADICIONAL: ha producido una excepción al ejecutar una instrucción Transact-SQL o por lotes. (Microsoft.SqlServer.ConnectionInfo) El principal de la base de datos posee un esquema en la base de datos y no se puede descartar. (Microsoft SQL Server, Error: 15138) Para obtener ayuda, haga clic en: http://bit.ly/2lzKpz – Jason
Imagino que hay un esquema llamado 'jason' que tendrá que cambiar el objeto de ese esquema a la misma. http://msdn.microsoft.com/en-us/library/ms173423.aspx –
Eliminé el esquema y pude eliminar al usuario. Cuando volví al diagrama, el propietario cambió a público. Todavía no es lo que quiero. ¿Alguna más sugerencia? – Jason
A pesar de que no habría ayudado en este caso (ya que sólo recrea toda la fila sysdiagrams
), estos scripts
ScriptDiagram2005 o ScriptDiagram2008
le permiten crear una secuencia de comandos INSERT de el "contenido" de los diagramas, que se volverá a ejecutar contra la base de datos de origen (o una copia de seguridad, o una copia con guiones, o lo que sea). Podría fácilmente (sabiendo lo que sabe ahora sobre principal_id
) volver a crear el diagrama con un nuevo propietario también.
Sólo tiene que encontrar y editar el resto de esta declaración en el guión
INSERT INTO sysdiagrams ([name], [principal_id], [version], [definition])
el beneficio real es ser capaz a la fuente de control/copia de seguridad del archivo de texto ...
UPDATE dbo.sysdiagrams
SET principal_id = 1
Conjunto una Cláusula WHERE si es necesario. El texto anterior sugiere que debe eliminar al usuario de la base de datos, pero no tuve que hacer eso. Estoy usando SQL2008 R2.
USE [db_name]
UPDATE dbo.sysdiagrams
SET principal_id = 1
si la declaración anterior no funciona, puede tener una edición en esta tabla con el botón derecho del ratón sobre los dbo.sysdiagrams y seleccione Editar top 200 filas, entonces se puede establecer la columna principal_id para todos los registros establecidos manualmente a 1
El método no sql funcionó para mí. Al principio no entendí del todo qué significaba @hamed aj, pero sí, para ser más explícito, en System Tables, haga clic en dbo.sysdiagrams y elija editar las 200 filas superiores. En la tabla que se muestra a continuación, simplemente encuentra la fila que define su diagrama de interés y cambia el valor en el principal_id a 1. Vaya a actualizar la lista de diagramas y verá que se actualiza a dbo como propietario. –
- 1. Cambiar el nombre del archivo de datos de la base de datos en SQL Server 2005
- 2. SQL Server 2005, cómo copiar un Diagrama de base de datos a otro servidor
- 3. Base de datos SQL Server 2005 'En recuperación'
- 4. Múltiples idiomas en una base de datos - SQL Server 2005
- 5. ¿Cómo cambio el propietario de una base de datos de SQL Server?
- 6. SQL Server 2008 a SQL Server 2005
- 7. Cambiar el tipo de datos varchar a nvarchar en la base de datos existente de SQL Server 2005. ¿Cualquier problema?
- 8. Consulta SQL para mostrar todas las vistas en una base de datos de SQL Server 2005
- 9. ¿Cómo cambiar el propietario de la base de datos PostgreSql?
- 10. cómo imprimir el diagrama de base de datos sql
- 11. sql server 2005 - exportar datos nvarchar (max)
- 12. degradación de SQL Server 2008 a SQL Server 2005
- 13. SQL Server 2005 replicación
- 14. ¿Cómo cambiar el tipo de base de un UDT en Sql Server 2005?
- 15. Cambios de seguimiento en una base de datos de SQL Server 2005
- 16. SQL Server 2008 compatibilidad con SQL Server 2005
- 17. Posible ocultar columnas en un diagrama de base de datos de SQL Server Management Studio?
- 18. Números persas en SQL Server 2005
- 19. Almacenamiento de un valor de C# DateTimeOffset en una base de datos de SQL Server 2005
- 20. cómo enumerar todos los objetos de una base de datos en particular en SQL Server 2005
- 21. ¿Cómo contar cada registro en cada tabla en una base de datos de SQL Server 2005?
- 22. Cómo exportar datos de SQL Server 2005 a MySQL
- 23. ¿Cómo recuperar la base de datos de MDF en SQL Server 2005?
- 24. Base de datos de SQL Server 2005 atascada en el modo de usuario único
- 25. Buscar un objeto en SQL Server (base de datos cruzada)
- 26. Isoweek en SQL Server 2005
- 27. Cómo transferir datos cifrados sql entre bases de datos de SQL Server 2005?
- 28. ¿Cómo establecer el esquema predeterminado de una base de datos en SQL Server 2005?
- 29. Cómo generar un diagrama de un esquema de base de datos muy grande (SQL Server)
- 30. SQL Server 2005 - Orden de combinaciones internas
Como se puede ver al ejecutar 'SELECT * FROM sys.database_principals',' principal_id' number 1 es el 'dbo' principal. Imagino que uno también podría considerar 'principal_id' 0, que es público. – jpmc26