无法对“视图”执行更改,因为它是不兼容的对象类型

时间:2019-05-15 06:18:43

标签: sql-server

我尝试更改数据库中的视图。但是系统抛出以下错误。

  

Msg 2010,级别16,状态1,过程V ******,第1行[批处理开始第0行]   无法对'dbo.V _ ****执行更改,因为它是不兼容的对象类型。

我删除了视图并创建了一个新视图,然后该视图起作用了。但我不想删除并创建。

ALTER view [dbo].[V_***] as
 with
  L******* (
   LOC_ID,
   CLASS_ID,
   LOC_BARCODE,
   LOC_NAME,
   LOC_NAME_BASE,
   LOC_NAME_LAST,
   SORT_LEVEL,
   P_LOC_ID,
   DEL_FLAG,
   SEL_FLAG,
   OVER_CHECK_FLAG
  )
  as
  (
   select
    LOC_ID,
    CLASS_ID,
    LOC_BARCODE,
    cast(LOC_NAME as nvarchar(4000)) LOC_NAME,
    cast('' as nvarchar(4000)) LOC_NAME_BASE,
    LOC_NAME LOC_NAME_LAST,
    SORT_LEVEL,
    P_LOC_ID,
    DEL_FLAG,
    SEL_FLAG,
    OVER_CHECK_FLAG

1 个答案:

答案 0 :(得分:0)

根据错误消息,我猜想您已经有一个具有该名称的对象。

  

无法对''进行更改,因为它是不兼容的对象类型。

原因:在sql server中,我们无法将一个对象更改为另一种对象类型,例如:

  1. 要查看的表,反之亦然
  2. 存储过程起作用,反之亦然
  3. 标量函数转换为表值函数,反之亦然

尝试使用其他名称的ALTER view [dbo].[V_***]

您始终可以通过以下方式在创建视图之前检查SQL Server上的视图:

select Name 
  from sys.views 
 where name LIKE '%your_view_name%'