SQL数据库项目中关于即时临时表的引用

4
我正在尝试将现在位于SQL Server 2008 R2上的旧数据库创建为Visual Studio 2010中的数据库项目。有几个存储过程使用了一些"即时生成"的临时表(使用SELECT * INTO #NewTempTable语句)。很明显,这会在数据库项目中引起SQL04151参考警告。
是否有任何方法可以修复或忽略这些特定警告?我知道最直接的答案可能是在过程内部声明临时表并定义列,但此时不是一个选项。
2个回答

1

在您的存储过程中添加SET FMTONLY OFF

来自MSDN:

仅向客户端返回元数据。可用于测试响应格式,而无需实际运行查询。

您的问题是默认情况下Visual Studio已经打开了此设置...这使得它可以确定响应的格式而不运行查询,但如果使用临时表,则无法正常工作。

这是MS Connect上关于此问题的讨论:Improve FMTONLY Intelligence

根据微软的回复,这在2012年已经修复,但早期版本不会解决。

最后,这里有一个关于FMTONLY问题的相关讨论


将SET FMTONLY OFF放在存储过程开头似乎不能让VS知道。仍然收到相同的警告。当您说“在存储过程中关闭SET FMTONLY”时,是指在开头声明它,还是在VS中有某个设置? - Justin Rassier
你能否在存储过程之外设置 SET FMTONLY OFF?如果不能,这可能不是解决问题的方法... - Michael Fredrickson

1

这似乎不是与VS 2010的最新数据库项目类型有关的问题,该类型作为SQL Server Data Tools的一部分安装。

尝试安装SQL Server Data Tools。 安装后,您将能够通过在“解决方案资源管理器”中右键单击它来将您的数据库项目升级到新类型。(新项目类型向后兼容SQL 2008和SQL 2005,并且还带有一些重大改进。)

顺便说一下,新项目类型具有非常通用的名称“SQL Server Database Project”,您将在“SQL Server”模板组中找到它,而不是在“数据库> SQL Server”组中找到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接