Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann ich ein Sicherungsskript aus einem Diagramm in SQL Server erstellen?

Ich habe eine vernünftige Lösung gefunden. Das Problem besteht darin, dass Management Studio nicht mehr als 65535 Zeichen für Nicht-XML-Daten anzeigen kann und nicht so eingestellt werden kann, dass mehr als 65535 angezeigt werden.

Siehe Code für die Dokumentation :)

Sicherungsskript:

-- 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

Wiederherstellungsskript:

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