How to export a SQL Server 2008 Database Diagram to another DB?

后端 未结 6 1322
遇见更好的自我
遇见更好的自我 2020-12-12 20:53

I use the handy Database Diagramming tool in SQL Server 2008 for creating and managing relationships. I have exported the sourceDB to the destinationDB but the diagram does

6条回答
  •  眼角桃花
    2020-12-12 21:48

    This generates an import string:

    SELECT
        'DECLARE @def AS VARBINARY(MAX) ; ' +
        'SELECT @def = CONVERT(VARBINARY(MAX), 0x' + CONVERT(NVARCHAR(MAX), [definition], 2) + ', 2) ;' +
        ' EXEC dbo.sp_creatediagram' +
            ' @diagramname=''' + [name] + ''',' +
            ' @version=' + CAST([version] AS NVARCHAR(MAX)) + ',' +
            ' @definition=@def'
        AS ExportQuery
    FROM
        [dbo].[sysdiagrams]
    WHERE
        [name] = '' -- Diagram Name
    

    Next, you run the generated string in other DB.

    As PROCEDURE:

    -- =============================================
    -- Author:      Eduardo Cuomo
    -- Description: Export Database Diagrama to SQL Query
    -- =============================================
    CREATE PROCEDURE [dbo].[Sys_ExportDatabaseDiagram]
        @name SYSNAME -- Diagram Name
    AS
    
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    
    SELECT
        'DECLARE @def AS VARBINARY(MAX) ; ' +
        'SELECT @def = CONVERT(VARBINARY(MAX), 0x' + CONVERT(NVARCHAR(MAX), [definition], 2) + ', 2) ; ' +
        ' EXEC dbo.sp_creatediagram' +
            ' @diagramname=''''' + [name] + ''''',' +
            ' @version=' + CAST([version] AS NVARCHAR(MAX)) + ',' +
            ' @definition=@def'
        AS ExportQuery
    FROM
        [dbo].[sysdiagrams]
    WHERE
        [name] = @name
    

提交回复
热议问题