2

SQL Server 2012 と SQL Server 2008 R2 を使用しています。

データベース内のすべてのオブジェクト (テーブル、トリガー、ストアド プロシージャ、関数など) からスクリプトを作成します。

このスクリプトは SQL Server Management Studio から生成しました。他のサーバーでこのスクリプトを使用してデータベースを再作成できます。しかし、別のデータベースを作成するためのスクリプトを実行した後、データベースのすべての図が表示されません。

したがって、データベースに存在するすべてのダイアグラムからバックアップ スクリプトを作成する必要があります。

すべてのダイアグラムを再作成するには、宛先データベースでこのスクリプトを実行する必要があります。

このリンクを見つけました。しかし、すべてのスクリプト(コマンドの挿入)を自動的に作成する考えが必要です。

4

3 に答える 3

8

私は合理的な解決策を見つけました。問題は、Management Studio が非 XML データに対して 65535 を超える文字を表示できず、65535 を超える文字を表示するように設定できないことです。

ドキュメントのコードを参照してください:)

バックアップ スクリプト:

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

復元スクリプト:

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
于 2014-11-12T10:02:31.487 に答える