sql-server - 如何从不同服务器成功迁移/复制数据库图

标签 sql-server tsql database-diagram

背景: 我们的数据库最初由第三方托管公司托管在共享服务器上。我们没有创建数据库图表的权限,所以快速的解决方案是在 .\sqlexpress 上创建图表以方便使用。现在我们的数据库位于我们自己的专用服务器上,因此我们有权创建图表(不是唯一的原因)。

现在我想将图表从我的 sqlexpress 迁移到新服务器,而不必重新创建它。所以出发this question我做了一个 SELECT * FROM localdb.dbo.sysdiagrams 找到了我需要的图表,然后通过复制和粘贴所有值(value)。这似乎已经创建了图表,除非我去查看它时收到此消息;

The docfile has been corrupted. (MS Visual Database Tools)

Error Image

我能想到的唯一导致问题的原因是 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/

相关文章:

c# - 关系数据库的全文搜索?

sql-server - 我应该将哪个连接字符串与 MS SQL 中的应用程序角色一起使用?

sql-server - 在更新脚本的生成中包含默认约束名称

C# 在 SQLite 和 SQL Server 之间同步数据

sql - 如何在 MSSQL 中的 VARCHAR 列上创建 CHECK 约束,指定数据中可能出现的有效字符集?

c# - Microsoft SQL Server 与 SQL Server Management Studio

sql - varchar 列上的标识键 - T-SQL

sql - 从 SQL Server 中的十进制中删除尾随零

sql - 这个社交媒体平台 PostgreSQL 数据库设计正确吗?

sql-server - SQL Server 数据库图显示关系