Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je créer un script de sauvegarde à partir d'un diagramme dans SQL Server ?

J'ai trouvé une solution raisonnable. Le problème est que Management Studio ne peut pas afficher plus de 65 535 caractères pour les données non XML et ne peut pas être configuré pour afficher plus de 65 535.

Voir le code pour la documentation :)

Script de sauvegarde :

-- 1. Read from DB, using XML to workaround the 65535 character limit
declare @definition varbinary(max)
select @definition = definition from dbo.sysdiagrams where name = 'ReportingDBDiagram' 

select
    '0x' + cast('' as xml).value('xs:hexBinary(sql:variable("@definition") )', 'varchar(max)')
for xml path('')

-- 2. Open the result XML in Management Studio
-- 3. Copy the result
-- 4. Paste this in backup script for @definition variable

Script de restauration :

declare @definition varbinary(max)
set @definition = 0xD0CF -- Paste 0x0 value from Backup script

-- Create diagram using 'official' Stored Procedure
exec dbo.sp_creatediagram
    @diagramname = 'ReportingDBDiagramCopy',
    @owner_id = null,
    @version = 1,
    @definition = @definition