我正在尝试使用现在在SQL Server 2008 R2上的旧数据库,并在Visual Studio 2010中为它创建一个数据库项目。有几个存储过程使用了一些“即时”临时表(SELECT * INTO #NewTempTable的类型)显然,这会在数据库项目中引起一些SQL04151引用警告。
有没有办法解决或者可能忽略这些特定的警告?我知道最直接的答案可能是在过程中实际声明临时表并定义列,但此时,这不是一个选项。
答案 0 :(得分:1)
在存储过程中转动SET FMTONLY OFF
。
来自MSDN:
仅返回客户端的元数据。可以用来测试格式 没有实际运行查询的响应。
您的问题是,默认情况下,Visual Studio启用了此设置...这使得它可以在不运行查询的情况下确定响应的格式,但如果使用临时表,则不起作用。
以下是MS Connect上此问题的讨论:Improve FMTONLY Intelligence
根据Microsoft的回复,这在2012年已得到修复,但在早期版本中无法解决。
答案 1 :(得分:1)
对于VS 2010的最新数据库项目类型,这似乎不是一个问题,它是作为SQL Server Data Tools的一部分安装的。
尝试安装SQL Server数据工具。安装完成后,您可以通过在解决方案资源管理器中右键单击它来将数据库项目升级到新类型。 (新项目类型向后兼容SQL 2008和SQL 2005,并且还带来了一些重大改进。)
仅供参考,新项目类型具有非常通用的名称“SQL Server数据库项目”,您可以在“SQL Server”模板组中找到它,而不是“数据库> SQL Server”组。