首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLMetal无法从Server 2005数据库创建DBML

SQLMetal无法从Server 2005数据库创建DBML
EN

Stack Overflow用户
提问于 2011-02-13 18:05:10
回答 2查看 1.7K关注 0票数 2

正如标题中已经提到的,我是否试图使用SQLMetal创建dbml文件。此操作的背景是创建一个用于在MVC-Application.中使用C#-Codefile,其中包含所有的表、函数、视图、存储过程等。

现在是问题所在。当我从命令启动SQLMetal时,需要时间,显示一些次要的警告和错误中的中断(DBML1057)。当我读到错误消息时,SQLMetal正在尝试提取一个不存在的存储过程。我看了十几遍数据库,但肯定找不到这样的程序。也许这个程序很久以前就被调用了。也就是说,您创建一个名为"GetGameDatesDesc“的SP,然后将它重命名为"GetGameDates".我认为,"GetGameDateDesc“正在寻找SQLMetal (就我的情况而言)。但是SQLMetal这个信息是从哪里来的呢?我在数据库里找不到一个字。我查看了所有的视图,功能,.机器人没有用。这个函数不再是数据库的一部分了。

编辑

以下是来自SQLMetal的警告:

Error DBML1042: Type 'GetGameDatesDesc‘的列元素中的成员属性'CCode’已经被使用。Error DBML1057:类型DBML1057的列元素中的存储属性或其默认值'_CCode‘已经被使用。

EN

回答 2

Stack Overflow用户

发布于 2011-02-13 18:51:17

它看起来在您现有的存储过程中有一些错误。也许您删除或重命名了某些存储过程,但另一些存储过程仍然调用该已删除或重命名的存储过程。尝试生成使用创建所有存储过程的script (鼠标右键单击数据库->任务-> generated ),并在生成的脚本存储过程名称中搜索导致错误的脚本。

票数 0
EN

Stack Overflow用户

发布于 2011-02-13 18:58:34

这是SqlMetal的一个不幸的限制。由于Server information_schema对SP代码的限制为4000个字符,因此SqlMetal使用sys.sql_modules视图查找SPs。但是这个视图不是由sp_rename函数更新的,所以如果您重命名一个SP,SqlMetal将不能正常工作。在重命名文档中发现的建议是删除和重新创建这类对象:

重命名存储过程、函数、视图或触发器不会更改sys.sql_modules目录视图定义列中相应对象名称的名称。因此,我们建议不要使用sp_rename来重命名这些对象类型。相反,删除并重新创建具有新名称的对象。

解决方案是删除该SP并重新创建它,因为Server将使用object_id删除相应的sys.sql_modules行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4985874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档