我无法保存数据库图表

Dej*_*jan 3 sql-server database-diagrams

我正在尝试保存数据库图表,但出现错误。我怎样才能解决这个问题?

无法将值 NULL 插入列“diagram_id”、表
“SOFT.dbo.sysdiagrams”;列不允许空值。插入失败。
该语句已终止。
'sp_creatediagram' 过程试图返回 NULL 状态,这是不允许的。
将改为返回状态 0。(.Net SqlClient 数据提供程序)

Aar*_*and 15

鉴于我们没有关于您的系统如何进入此状态的背景,您在尝试创建第一个图表之前做了什么,如果您过去成功创建图表,甚至您使用的是什么版本的 SQL Server。听起来您的sysdiagrams桌子不知何故丢失IDENTITYdiagram_id列上的属性。做这个:

DROP TABLE dbo.sysdiagrams;
GO
CREATE TABLE [dbo].[sysdiagrams]
(
    [name] [sysname] NOT NULL,
    [principal_id] [int] NOT NULL,
    [diagram_id] [int] IDENTITY(1,1) PRIMARY KEY,
    [version] [int] NULL,
    [definition] [varbinary](max) NULL,
    CONSTRAINT [UK_principal_name] UNIQUE ([principal_id],[name])
);

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
Run Code Online (Sandbox Code Playgroud)

这当然会丢失您之前能够保存的所有图表。

(在执行搜索后,看到许多人建议将此列设为 0 的默认设置,这让我感到非常难过。这在您创建一个图表后非常好,但一旦您尝试创建第二个图表,就会由于多种原因而分崩离析。)