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