用select name from sysindexes where id=object_ID('a_Building')
发现表a_Building里面有很多索引,但是到设计器去查看,确是没有的,
导致我在编写索引脚本的执行删除的时候报错:
IF EXISTS (SELECT name FROM sysindexes WHERE name = 'IXS_w_RealEstateCorp_CorpName')
DROP INDEX a_Building.IXS_w_RealEstateCorp_CorpName
GO以上是怎么回事呢?如何写比较好?
发现表a_Building里面有很多索引,但是到设计器去查看,确是没有的,
导致我在编写索引脚本的执行删除的时候报错:
IF EXISTS (SELECT name FROM sysindexes WHERE name = 'IXS_w_RealEstateCorp_CorpName')
DROP INDEX a_Building.IXS_w_RealEstateCorp_CorpName
GO以上是怎么回事呢?如何写比较好?
解决方案 »
- select语句小疑问
- SQL Server批量更新
- sqlserver2005 客户端如何更改默认数据库
- truncate table语句会回滚吗?
- 联合查询的问题
- 多个字段只有其中的一个字段触发DB_E_ERRORSOCCURRED异常是怎么回事???
- select count(*) from xs where 性别='男' and 年龄>'60' 和select count(*) from xs where 年龄>'60' and 性别='男',那个执行效率高
- 请问关于数据库的使用思路的问题,谢谢!
- 关于游标
- 你懂SQL就知道怎么回答
- 命令行方式插入图片
- 如何把这段sql改为存储过程?有两个select语句的存储过程如何调用?
更新sysindexes的资料.DBCC UPDATEUSAGE ('a_Building') WITH NO_INFOMSGS
GO然后再select name from sysindexes where id=object_ID('a_Building') 看看
DROP INDEX 索引名 ON 表名
--這樣判斷是不行的,索引名可以重復,加多一個條件ID=object_id('表')
if exists(select * from sysindexes where ID=object_id('表名') and Name=N'索引名')
DROP INDEX 索引名 ON 表名
得出一下结果:
------------------------
name
IX_a_building_buildingID
_WA_Sys_RealEstateCorpId_0C0786B7
IXS_a_Building_BuildingName
_WA_Sys_ItemId_0C0786B7
_WA_Sys_BuildingName_0C0786B7
_WA_Sys_BuildingAddr_0C0786B7
_WA_Sys_ClosedownState_0C0786B7
_WA_Sys_BuildingArea_0C0786B7
_WA_Sys_RegisType_0C0786B7
_WA_Sys_ForecastState_0C0786B7
IXS_a_Building_RealEstateCorpID
_WA_Sys_FloorsNumbers_0C0786B7
_WA_Sys_StateCode_0C0786B7
_WA_Sys_District_0C0786B7
_WA_Sys_BuildFunc_0C0786B7
_WA_Sys_MbFloorNumbers_0C0786B7
_WA_Sys_MoundNo_0C0786B7
_WA_Sys_DroitSource_0C0786B7
_WA_Sys_LandArea_0C0786B7
_WA_Sys_CompleteDate_0C0786B7
_WA_Sys_ConstructionQuality_0C0786B7
_WA_Sys_DroitType_0C0786B7
_WA_Sys_PreMappingCorpId_0C0786B7
_WA_Sys_BuildingGUID_0C0786B7
PK__a_Building__47FC752D
_WA_Sys_00000020_0C0786B7
_WA_Sys_0000003B_0C0786B7
_WA_Sys_0000003E_0C0786B7然后是执行:
IF EXISTS (SELECT name FROM sysindexes WHERE id=object_ID('a_Building') and name = '_WA_Sys_RealEstateCorpId_0C0786B7')
DROP INDEX WA_Sys_RealEstateCorpId_0C0786B7 on a_Building
得出以下提示:
消息 3701,级别 11,状态 7,第 2 行
无法对 索引'a_Building.WA_Sys_RealEstateCorpId_0C0786B7' 执行 删除,因为它不存在,或者您没有所需的权限。
(
另注:Garnett_KG 的
更新sysindexes的资料.
DBCC UPDATEUSAGE ('a_Building') WITH NO_INFOMSGS
GO
的方法不行阿,我把'a_Building'换成我的数据库名也不行
)
===
换个最高权限帐户试试?
在sql2000底下是可以用Root<>0
但是我是在SQL2005环境下的,需要用什么来标识呢?目前只发现status字段的值不一样,但是还找不到规律
望指点...
select name from sysindexes
where id=object_ID('a_Building') and indid > 0 and indid < 255 and (status & 64)=0
smallint
ID of the index:0 = Heap ///实在不明白这是什么意思,大虾们指导.
1 = Clustered index >1 = Nonclustered index