【升级】升级到3.6出现对象名’xxxx’无效

作者:佚名 来源:本站原创 点击数: 发布时间:2011年01月27日

问题在升级到3.6时,特别是从低版本一步步升过来时,出现对象名无效的情况应该怎么解决呢?

回答首先看这个对象名是数据库表、字段还是存储过程。确定对象的位置。我们拿对象名  'dbo.PR_Shop_OrderItem_UpdateByProductId' 无效做例子:

可以拿SF3.6安装包中的数据库脚本创建一个数据库,然后找到  'dbo.PR_Shop_OrderItem_UpdateByProductId'的位置,发现是一个存储过程。

 

由于网站的存储过程创建都在App_DataSQLServerSchema2005.sql这个脚本里:

打开这个文件(用记事本就可以),然后搜索PR_Shop_OrderItem_UpdateByProductId会得到两段代码:

一:

/****** Object:  StoredProcedure [dbo].[PR_Shop_OrderItem_UpdateByProductId]    Script Date: 09/15/2010 11:00:17 ******/

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[PR_Shop_OrderItem_UpdateByProductId]') AND type in (N'P', N'PC'))

DROP PROCEDURE [dbo].[PR_Shop_OrderItem_UpdateByProductId]

GO

二:

/****** Object:  StoredProcedure [dbo].[PR_Shop_OrderItem_UpdateByProductId]    Script Date: 09/15/2010 11:00:17 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[PR_Shop_OrderItem_UpdateByProductId]') AND type in (N'P', N'PC'))

BEGIN

EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[PR_Shop_OrderItem_UpdateByProductId]

    (

      @ProductId INT ,

      @ProductName NVARCHAR(255)

    )

AS

    UPDATE  PE_ORDERITEM

    SET     productname = @productname

    WHERE   productid = @productid'

END

GO

把这两段代码复制到一起,到数据库中运行这个脚本:

 

执行代码成功,然后再升级一次。