下面是代碼段,它將顯示重複索引,第二個查詢將返回相同的腳本。你只需要提供表名。對於實施例 組@tablename =「SalaryMaster」 這可以通過使用完成while循環上
select name from sys.tables
放入臨時表應用而循環,並執行下面的代碼
declare @TableName as varchar(50)
set @TableName = 'EmployeeMaster'
--- 1.
select name as IndexName,Index_id as IndexID from sys.indexes
where index_id NOT in (
select MIN(index_id) from (
select avg(column_id) avgCol,index_id from sys.index_columns where
object_id = object_id(@TableName)
group by index_id
) as a group by avgCol
) and object_id = object_id(@TableName)
--- 2.
select '
IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'''[email protected]+''')
AND name = N'''+name+''')
DROP INDEX ['+name+'] ON '[email protected]+' WITH (ONLINE = OFF)
' from sys.indexes
where index_id NOT in (
select MIN(index_id) from (
select avg(column_id) avgCol,index_id from sys.index_columns where
object_id = object_id(@TableName)
group by index_id
) as a group by avgCol
) and object_id = object_id(@TableName)
整理了在製備用於遷移,但你已經有兩個體面的答案。你可以試試嗎?如果您有可接受的答案,我寧願不遷移。 – Will
@威爾:非常感謝我已經嘗試了他們兩個。但我仍在等待完美的答案。謝謝。 –