删除后创建索引已经存在消息索引

时间:2017-08-18 08:41:30

标签: sql sql-server tsql sql-server-2008-r2

我在sql server 2008 r2中删除并创建索引时遇到问题。当我在删除索引后创建索引时,索引已经存在。如果我搜索索引表,我认为它不存在

获取以下错误消息

  

Msg 1913,Level 16,State 1,Line 40操作失败,因为a   已有名称为“IX_PartiesIpoData_companyId”的索引或统计信息   存在于表'CoreReferenceStaging.dbo.PartiesIpoData'。

尝试以下

IF EXISTS(SELECT  * FROM  sys.indexes ind INNER JOIN   sys.index_columns ic ON  ind.object_id = ic.object_id and ind.index_id = ic.index_id 
where ind.name = 'IX_PartiesIpoData_companyId')
    DROP INDEX IX_PartiesIpoData_companyId ON PartiesIpoData
CREATE NONCLUSTERED INDEX IX_PartiesIpoData_companyId on CoreReferenceStaging.dbo.PartiesIpoData(companyId) 

这个

IF EXISTS(SELECT * 
FROM sys.indexes 
WHERE name='IX_PartiesIpoData_companyId' AND object_id = OBJECT_ID('CoreReferenceStaging.dbo.PartiesIpoData'))
    DROP INDEX IX_PartiesIpoData_companyId ON PartiesIpoData
CREATE NONCLUSTERED INDEX IX_PartiesIpoData_companyId on CoreReferenceStaging.dbo.PartiesIpoData(companyId) 

这是索引表的样子

enter image description here

索引表

1 个答案:

答案 0 :(得分:0)

只需按SQL Server查询搜索现有名称索引:

dx = B.X - A.X
dy = B.Y - A.Y
if Width * Abs(dy) < Height * Abs(dx) then
   x = Sign(dx) * Width / 2
   y = dy * x / dx
else
   y = Sign(dy) * Height / 2
   x = dx * y / dy

如果已存在同名索引,则将其删除。