是这样的 我建了 一个视图已经成功了因为表关系很多 我就 把视图 数据select into 到 一个表里边(表里数据和视图 一模一样 没改过)后来 我发现 视图数据更新了 那个表还是原来数据,我就又想再创建一个视图 可是我写 这个新视图时候 把 From 语句后边的 写错了写成 那个表
(本来应该是些 最早那个视图的,新建视图加入了自定义函数 是在原有视图上创建的)就这样 我把 新视图创建好了,后来觉得不对(因为新视图应该是从原来视图中获取 不是 那个从原视图生成的表里边)
我就改了下 From 后边的 东东 删除了 那个 表(可以叫临时表 用了下的那时间做测试用),现在 可以打开这个新视图 但我用SQL 分页 存储过程时候老说 那个被删除的表 是个无效对象 这个要怎么弄下
-------------------------------------------------------我把 视图名也改了 而且删除了 重新做的视图还是这样提示 真不知道咋弄了
可能 我没说很清楚 现在 大致 代码下表A 表B 表C 表D 生成 视图A然后 我用 视图A 生成 TempTableA再后 我 又建一视图B  基表为TempTableA (本应该是 由视图A来的 ,顺便说下 视图B里边加了自定义函数)这样觉得不对 就 修改了 视图B, 把它基于了视图A,然后删除了那个TempTableA 后来就出现了  我 说的那问题 一直告诉我 TempTableA 是个无效对象已经把视图B重新生成了 而且同样SQL语句创建的不同名的 视图C 也这样提示 悲剧呀 这个到底该怎么弄 下谢谢了

解决方案 »

  1.   


    你说的真是有点绕啊..这也是你自己可能也被绕进去了..出问题的或许是存过上而非表上..
    因为你已经SELECT ..INTO到一表里那说明那个表已经是实表.TempTableA ,只要TempTableA还存在就独立于视图、原始数据表。
     
      

  2.   


    SELECT ..INTO到一表里那说明那个表已经是实表.TempTableA 是把 视图A的数据写到TempTableA  啊后来 创建 视图B 先基于 这个TempTableA  最后  删除 TempTableA 的select 视图A into TempTableA
    然后 创建视图B  select a.*, 自定义函数(a.字段),函数(a.字段)  From TempTableA A这样视图B 完成,后来我就改 成
    select a.*, 自定义函数(a.字段),函数(a.字段)  From 视图A A这下是不是 可以删除 TempTableA 了就这样 我现在用 视图B时候 它告诉我 TempTableA 不是有效对象
      

  3.   

    按你的描述我写了几个测试的是不会有错的。
    只要最后创建的视图不是基于TempTableA表那么TempTableA 怎么删除都不会影响到视图
     
    SELECT ..INT……
    [/Quote]
      

  4.   


    不好 意思 写错是这样的 原有视图 OrgDepUser_Viewselect * into 'NS_OrgDepUserForSearch_View' From [OrgDepUser_View]
    CREATE VIEW [dbo].[Test_OrgDepUser]
    AS
    SELECT    OrgID, OrgName, CityId, TownId, UserID, TrueName, UserName, AppoID, DepID, Portrait, Description, UserCityID, UserProvinceID, sUserID, ForteID, 
                          Forte, dbo.UnionForteID(UserID) AS AllForteID, dbo.UnionForteStr(UserID) AS AllForte
    FROM        'NS_OrgDepUserForSearch_View' 然后改成下边
    CREATE VIEW [dbo].[Test_OrgDepUser]
    AS
    SELECT    OrgID, OrgName, CityId, TownId, UserID, TrueName, UserName, AppoID, DepID, Portrait, Description, UserCityID, UserProvinceID, sUserID, ForteID, 
                          Forte, dbo.UnionForteID(UserID) AS AllForteID, dbo.UnionForteStr(UserID) AS AllForte
    FROM         dbo.OrgDepUser_View最后删除 'NS_OrgDepUserForSearch_View'
    现在 我创建的视图
    CREATE VIEW [dbo].[Test_OrgDepUser]
    AS
    SELECT    OrgID, OrgName, CityId, TownId, UserID, TrueName, UserName, AppoID, DepID, Portrait, Description, UserCityID, UserProvinceID, sUserID, ForteID, 
                          Forte, dbo.UnionForteID(UserID) AS AllForteID, dbo.UnionForteStr(UserID) AS AllForte
    FROM         dbo.OrgDepUser_ViewCREATE VIEW [dbo].[T_OrgDepUser]
    AS
    SELECT    OrgID, OrgName, CityId, TownId, UserID, TrueName, UserName, AppoID, DepID, Portrait, Description, UserCityID, UserProvinceID, sUserID, ForteID, 
                          Forte, dbo.UnionForteID(UserID) AS AllForteID, dbo.UnionForteStr(UserID) AS AllForte
    FROM         dbo.OrgDepUser_View
    上边执行时候 都会提示Msg 208, Level 16, State 1, Line 1
    Invalid object name 'NS_OrgDepUserForSearch_View'.
      

  5.   


    把所有'NS_OrgDepUserForSearch_View'
    改成:有'NS_OrgDepUserForSearch_View
    你这是字符串 不是表或视图或其他可引用表结构..
      

  6.   


    --试试?
    select * into NS_OrgDepUserForSearch_View  From [OrgDepUser_View]
    CREATE VIEW [dbo].[Test_OrgDepUser]
    AS
    SELECT    OrgID, OrgName, CityId, TownId, UserID, TrueName, UserName, AppoID, DepID, Portrait, Description, UserCityID, UserProvinceID, sUserID, ForteID, 
                          Forte, dbo.UnionForteID(UserID) AS AllForteID, dbo.UnionForteStr(UserID) AS AllForte
    FROM        NS_OrgDepUserForSearch_View
      

  7.   

    按照楼上的方法是可以了 也就是把 NS_OrgDepUserForSearch_View 恢复了 但我确实不知道为什么打开 其代码 如下USE [Public]
    GO
    /****** Object:  Table [dbo].[NS_OrgDepUserForSearch_View]    Script Date: 10/02/2011 21:55:27 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[NS_OrgDepUserForSearch_View](
    [OrgID] [int] NOT NULL,
    [OrgName] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [CityId] [int] NULL,
    [TownId] [int] NULL,
    [UserID] [int] NOT NULL,
    [TrueName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
    [UserName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [AppoID] [int] NULL,
    [DepID] [int] NULL,
    [Portrait] [int] NULL,
    [Description] [ntext] COLLATE Chinese_PRC_CI_AS NULL,
    [UserCityID] [int] NULL,
    [UserProvinceID] [int] NULL,
    [sUserID] [int] NOT NULL,
    [ForteID] [int] NOT NULL,
    [Forte] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    创建视图USE [Public]
    GO
    /****** Object:  View [dbo].[Test_OrgDepUser]    Script Date: 10/02/2011 21:57:44 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE VIEW [dbo].[Test_OrgDepUser]
    AS
    SELECT    OrgID, OrgName, CityId, TownId, UserID, TrueName, UserName, AppoID, DepID, Portrait, Description, UserCityID, UserProvinceID, sUserID, ForteID, 
                          Forte, dbo.UnionForteID(UserID) AS AllForteID, dbo.UnionForteStr(UserID) AS AllForte
    FROM         dbo.OrgDepUser_View这两个有关系? 看半天 还是不明白 
      

  8.   


    仅仅是恢复了 原来那个 表实在不明白 为什么现在删除了 NS_OrgDepUserForSearch_View  这个表 还不可以 和以前一样错难道必须要这个 NS_OrgDepUserForSearch_View 实在搞不明白
      

  9.   

    SELECT    OrgID, OrgName, CityId, TownId, UserID, TrueName, UserName, AppoID, DepID, Portrait, Description, UserCityID, UserProvinceID, sUserID, ForteID, 
                          Forte, dbo.UnionForteID(UserID) AS AllForteID, dbo.UnionForteStr(UserID) AS AllForte
    FROM         dbo.OrgDepUser_View实在不好意思 问题出在这里了自定义函数 UnionForteID 和 UnionForteStr 用到NS_OrgDepUserForSearch_View 表 后来给忘了改现在 改成 OrgDepUser_View视图  NS_OrgDepUserForSearch_View 表就可以顺利被删除郁闷 + 悲剧+ 无语╮(╯▽╰)╭ 太马虎了 一直以为是SQL 视图 表 创建先后顺序问题 
      

  10.   

    结贴哦 给分了 谢谢 guoweifyj解铃还须系铃人 自己搞半天 才弄出了