在SQL2005中,安装数据库关系图时,系统提示
此数据库缺少一个或多个使用数据库关系图所需的支持对象。是否要创建它们?  确定后,出现错误信息:列名 'uvalue' 无效。
列名 'uvalue' 无效。
找不到存储过程 'dbo.sp_upgraddiagrams'。
对象无效。'dbo.sysdiagrams' 不允许有扩展属性,或对象不存在。
对象无效。'dbo.sp_upgraddiagrams' 不允许有扩展属性,或对象不存在。 (.Net SqlClient Data Provider)服务器名称: 
错误号: 207
严重性: 16
状态: 1
过程: sp_upgraddiagrams
行号: 55查找时,发现缺少该存储过程sp_upgraddiagrams.尝试建立时,又出现错误"列名 'uvalue' 无效"数据库是由7.0版本后升级到2005的,其它几个库都可以正常安装使用,唯有这一个失败

解决方案 »

  1.   

    create PROCEDURE [dbo].[sp_upgraddiagrams]
    AS
    BEGIN
    IF OBJECT_ID(N'dbo.sysdiagrams') IS NOT NULL
    return 0;

    CREATE TABLE dbo.sysdiagrams
    (
    name sysname NOT NULL,
    principal_id int NOT NULL, -- we may change it to varbinary(85)
    diagram_id int PRIMARY KEY IDENTITY,
    version int,

    definition varbinary(max)
    CONSTRAINT UK_principal_name UNIQUE
    (
    principal_id,
    name
    )
    );
    /* Add this if we need to have some form of extended properties for diagrams */
    /*
    IF OBJECT_ID(N'dbo.sysdiagram_properties') IS NULL
    BEGIN
    CREATE TABLE dbo.sysdiagram_properties
    (
    diagram_id int,
    name sysname,
    value varbinary(max) NOT NULL
    )
    END
    */ --IF OBJECT_ID(N'dbo.dtproperties') IS NOT NULL
    --begin
    -- insert into dbo.sysdiagrams
    -- (
    -- [name],
    -- [principal_id],
    -- [version],
    -- [definition]
    -- )
    -- select  
    -- convert(sysname, dgnm.[value]),
    -- DATABASE_PRINCIPAL_ID(N'dbo'), -- will change to the sid of sa
    -- 0, -- zero for old format, dgdef.[version],
    -- dgdef.[lvalue]
    -- from dbo.[dtproperties] dgnm
    -- inner join dbo.[dtproperties] dggd on dggd.[property] = 'DtgSchemaGUID' and dggd.[objectid] = dgnm.[objectid]
    -- inner join dbo.[dtproperties] dgdef on dgdef.[property] = 'DtgSchemaDATA' and dgdef.[objectid] = dgnm.[objectid]

    -- where dgnm.[property] = 'DtgSchemaNAME'-- and dggd.[uvalue] like N'_EA3E6268-D998-11CE-9454-00AA00A3F36E_' 
    -- return 2;
    --end
    return 1;
    END