背景:
我们的数据库最初由第三方托管公司托管在共享服务器上。我们没有创建数据库图表的权限,所以快速的解决方案是在 .\sqlexpress
上创建图表以方便使用。现在我们的数据库位于我们自己的专用服务器上,因此我们有权创建图表(不是唯一的原因)。
现在我想将图表从我的 sqlexpress 迁移到新服务器,而不必重新创建它。所以出发this question我做了一个 SELECT * FROM localdb.dbo.sysdiagrams
找到了我需要的图表,然后通过复制和粘贴所有值(value)。这似乎已经创建了图表,除非我去查看它时收到此消息;
The docfile has been corrupted. (MS Visual Database Tools)
我能想到的唯一导致问题的原因是 sql server 版本不同。
SQLEXPRESS - Microsoft SQL Server 2012 (SP3-GDR) (KB4019092) - 11.0.6251.0 (X64) Jul 7 2017 07:14:24 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows NT 6.3 (Build 15063: )
. .
NEWSERVER - Microsoft SQL Server 2014 (SP2-CU7) (KB4032541) - 12.0.5556.0 (X64) Aug 17 2017 12:07:38 Copyright (c) Microsoft Corporation Web Edition (64-bit) on Windows NT 6.3 (Build 9600: )
最佳答案
在新数据库中启用图表:
在新数据库中单击“数据库图表”文件夹。 SQL Server Management Studio 将提示您启用图表。如果你确定这一步,你将在数据库中有一个 sysdiagrams 表。
然后执行以下命令:
IF EXISTS (SELECT name FROM sys.objects WHERE object_id = OBJECT_ID(N'sysdiagrams') AND type in (N'U',N'PC'))
DROP TABLE sysdiagrams
GO
CREATE TABLE [dbo].[sysdiagrams](
[name] [sysname] NOT NULL,
[principal_id] [int] NOT NULL,
[diagram_id] [int] IDENTITY(1,1) NOT NULL,
[version] [int] NULL,
[definition] [varbinary](max) NULL,
PRIMARY KEY CLUSTERED
(
[diagram_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [UK_principal_name] UNIQUE NONCLUSTERED
(
[principal_id] ASC,
[name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'microsoft_database_tools_support', @value=1 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'sysdiagrams'
GO
SELECT name, principal_id,[version], [definition]
FROM olddb.dbo.sysdiagrams -- OLD Server Database Diagram
INSERT INTO newdb.dbo.sysdiagrams
SELECT name, principal_id,[version], [definition]
关于sql-server - 如何从不同服务器成功迁移/复制数据库图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47569122/