Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010数据库项目允许生成包含无效SQL的存储过程_Sql_Visual Studio 2010_Sql Server 2005_Database Project - Fatal编程技术网

Visual studio 2010数据库项目允许生成包含无效SQL的存储过程

Visual studio 2010数据库项目允许生成包含无效SQL的存储过程,sql,visual-studio-2010,sql-server-2005,database-project,Sql,Visual Studio 2010,Sql Server 2005,Database Project,我有一个指定为2005的数据库项目。这在“项目设置”下的“属性”屏幕上 我们部署了几个服务器,并根据production is 2005运行,但我们有一些2008 R2服务器,我们是根据这些服务器开发的,因此我们将项目指定为2005 我添加了我在2008R2数据库上创建的存储过程,该数据库仅用于开发。一切正常,因此我将其添加到数据库项目中。该项目构建并部署良好,这意味着它生成了.sql文件。我们不应用VS项目中的更改 我们有一个针对2005数据库运行的CI TFS构建。我们有几种配置,每种配置都

我有一个指定为2005的数据库项目。这在“项目设置”下的“属性”屏幕上

我们部署了几个服务器,并根据production is 2005运行,但我们有一些2008 R2服务器,我们是根据这些服务器开发的,因此我们将项目指定为2005

我添加了我在2008R2数据库上创建的存储过程,该数据库仅用于开发。一切正常,因此我将其添加到数据库项目中。该项目构建并部署良好,这意味着它生成了.sql文件。我们不应用VS项目中的更改

我们有一个针对2005数据库运行的CI TFS构建。我们有几种配置,每种配置都针对不同的数据库进行“部署”。它建造和部署得很好。同样,它只将更新生成一个SQL文件

存储的进程包含以下代码:

    insert SiteCAChargeParameterSet
    values (
             ( select siteID 
                 from SiteCAChargeParameterSet
                where SiteCAChargeParameterSetID = @OldSiteCAChargeParameterSet
              ),
                @NewSetName,0,0,@UserID, @currentDate,@UserID, @currentDate
            )
所有变量都已定义。 当我试图在2005数据库上创建这个存储过程时,我得到了一个错误1046,它表明select is not allowed子查询在此上下文中是不允许的

我的问题是为什么编译器允许这样做。显然,因为我已经指出这是一个SQLServer2005项目,所以它应该遵循该版本的规则。此外,由于它与部署的2005年数据库进行了比较,因此也应该知道这是非法的

我希望在某个地方有一个我没有打开的选项或类似的东西。
或者这只是SQL“编译器”中的一个错误。

如果您没有这样做,请尝试在项目属性页的“调试”选项卡上编辑目标连接,并确保它指向SQL 2005数据库


这将确保VS检查项目的SQL版本是否正确

如果尚未执行此操作,请尝试在“项目属性”页面的“调试”选项卡上编辑目标连接,并确保它指向SQL 2005数据库


这将确保VS检查项目的SQL版本是否正确

尝试将2008r2服务器上数据库的兼容性级别设置为90 SQL server 2005

ALTER DATABASE <database_name>
SET COMPATIBILITY_LEVEL = 90 

这可能允许检测不兼容的子选择。

尝试将2008r2服务器上数据库的兼容级别设置为90 SQL server 2005

ALTER DATABASE <database_name>
SET COMPATIBILITY_LEVEL = 90 
这可能允许检测不兼容的子选择