编译数据库项目时如何处理临时表
Posted
技术标签:
【中文标题】编译数据库项目时如何处理临时表【英文标题】:How to deal with temp tables when compiling database project 【发布时间】:2011-06-02 05:18:13 【问题描述】:我们刚刚创建了一个包含多个数据项目的解决方案。我们继承了系统并想要进行数据库清理,但是当我们编译一些数据库时,我们得到了 table、id 等不存在的错误,并且它发生在存储过程中创建临时表的地方。
假设一个存储过程创建了一个临时表,最后将其删除,编译器抱怨并说该表不存在(在数据库模式中)。我们如何解决这个问题?有什么我找不到的设置吗?
提前致谢。
【问题讨论】:
你不能也不要编译 .net 意义上的数据库项目顺便说一句。您针对执行各种检查的数据库服务器运行脚本。 也许我应该提到它是一个数据层应用程序项目msdn.microsoft.com/en-us/library/ee240739.aspx“当您构建 DAC 项目时,Visual Studio 会编译一个 DAC 定义并将其放置在一个 DAC 包中。” 这很严重,因为aspnet_Membership存储过程已经使用了这种表。您能否提供一个指向 microsoft connect 问题的链接以跟踪其解决方案?我知道我可以通过在后期生成脚本中放置必要的存储过程来解决问题 microsoft connect issue 声称“已修复”,但我自己只是在 VS2010 中观察到了这个问题。 【参考方案1】:Microsoft Connect 中针对此问题提交了一个错误,并且建议了一种解决方法:使用表变量而不是临时表。所以,使用
declare @t table (ID int, Name nvarchar(100) )
insert into @t ...
而不是
create table #t (ID int, Name nvarchar(100) )
insert into #t ...
drop table #t
【讨论】:
以上是关于编译数据库项目时如何处理临时表的主要内容,如果未能解决你的问题,请参考以下文章