SqlServer导出关系图到.sql
Vegeta原创:
SqlServer2008R2自带的数据库关系图,方便我们可视化管理数据库表,提供更友好的数据库架构管理方式,但是如果将它导出到.sql文件呢?
我们都知道数据库模型图是存在系统表[sysdiagrams]之中的,虽然SqlServer2008R2数据库下的“任务——导出数据”提供了将表相同的数据库模型图导入另一表,但是却不能将其导出到.sql文件。
废话不多说了,建立一个Test的测试库,随便建立一个表也叫test,建立一个数据库模型图,将test表加入其中。效果如下:
执行如下sql将数据库模型图放入一个中间表:
SELECT * into 数据库模型图 FROM dbo.sysdiagrams;
选择Test数据库,右键 任务- >生成脚本->下一步->选择特定数据库对象
下一步->高级->选择导出数据和架构
确定->选择一个合适的sql保存位置->下一步-》下一步->完成;
打开生成的脚本在最后一行追加粘贴如下sql:
CREATE TABLE [dbo].[sysdiagrams]
(
[name] [sys].[sysname] NOT NULL,
[principal_id] [int] NOT NULL,
[diagram_id] [int] NOT NULL IDENTITY(1, 1),
[version] [int] NULL,
[definition] [varbinary](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON[PRIMARY]
GO
ALTER TABLE [dbo].[sysdiagrams] ADD CONSTRAINT [PK__sysdiagr__C2B05B61023D5A04]PRIMARY KEY CLUSTERED ([diagram_id]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[sysdiagrams] ADD CONSTRAINT [UK_principal_name]UNIQUE NONCLUSTERED ([principal_id], [name]) ON [PRIMARY]
GO
EXEC sp_addextendedpropertyN'microsoft_database_tools_support', 1, 'SCHEMA', N'dbo', 'TABLE', N'sysdiagrams', NULL, NULL
GO
INSERT sysdiagrams(name,principal_id,[version],[definition])
SELECT name,principal_id,[version],[definition] FROM [数据库模型图];
Go
建立新数据Test1,执行拼合的脚本效果如下:
打开数据库关系图,效果和原来一样。