正如标题中已经提到的,我是否试图使用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‘已经被使用。
发布于 2011-02-13 18:51:17
它看起来在您现有的存储过程中有一些错误。也许您删除或重命名了某些存储过程,但另一些存储过程仍然调用该已删除或重命名的存储过程。尝试生成使用创建所有存储过程的script (鼠标右键单击数据库->任务-> generated ),并在生成的脚本存储过程名称中搜索导致错误的脚本。
发布于 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行。
https://stackoverflow.com/questions/4985874
复制相似问题