Visual studio 2010数据库项目允许生成包含无效SQL的存储过程
我有一个指定为2005的数据库项目。这在“项目设置”下的“属性”屏幕上 我们部署了几个服务器,并根据production is 2005运行,但我们有一些2008 R2服务器,我们是根据这些服务器开发的,因此我们将项目指定为2005 我添加了我在2008R2数据库上创建的存储过程,该数据库仅用于开发。一切正常,因此我将其添加到数据库项目中。该项目构建并部署良好,这意味着它生成了.sql文件。我们不应用VS项目中的更改 我们有一个针对2005数据库运行的CI TFS构建。我们有几种配置,每种配置都针对不同的数据库进行“部署”。它建造和部署得很好。同样,它只将更新生成一个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构建。我们有几种配置,每种配置都
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
这可能允许检测不兼容的子选择