背景:
我们的数据库最初由共享服务器上的第三方托管公司托管。我们没有创建数据库图表的权限,因此快速解决方案是在.\sqlexpress
创建图表以方便。现在我们的数据库在我们自己的专用服务器上,因此我们有权创建图表(不是唯一的原因)。
现在我想从sqlexpress将图表迁移到新服务器,而无需重新创建它。因此,this question我找到了我需要的图表SELECT * FROM localdb.dbo.sysdiagrams
,然后通过复制和粘贴所有值来执行INSERT INTO newdb.dbo.sysdiagrams VALUES (diagramValuesHere)
。这似乎创建了图表,除非我去查看它我收到此消息;
docfile已损坏。 (MS Visual Database Tools)
我唯一可以想到的是导致问题的是sql server版本不同。
SQLEXPRESS - Microsoft SQL Server 2012(SP3-GDR)(KB4019092) - 11.0.6251.0(X64)2017年7月7日07:14:24版权所有(c)Windows NT 6.3上的Microsoft Corporation Express Edition(64位)(Build 15063:)
。
NEWSERVER - Microsoft SQL Server 2014(SP2-CU7)(KB4032541) - 12.0.5556.0(X64)2017年8月17日12:07:38版权所有(c)Windows NT 6.3上的Microsoft Corporation Web Edition(64位)(Build 9600:)
答案 0 :(得分:1)
在新数据库中启用Diagrams:
在新数据库中,单击"数据库图"夹。 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]
答案 1 :(得分:0)
一方面,Microsoft只提供与一个版本的MSSQL和前一个版本的兼容性,因此图表在您的MSSQL实例之间可能不兼容。
另一方面,它们提供了将图表升级到下一版本的功能:https://technet.microsoft.com/en-us/library/ms190628(v=sql.110).aspx
升级旧数据库图表
- 从对象资源管理器中,展开数据库。
- 展开数据库下的Database Diagram节点。
- 如果要设置数据库图表,请在出现提示时选择“是”。
- 这将升级存储在数据库中的图表。