Skip to main content

Find duplicate indexes on server


USE MASTER;

GO



DECLARE @DBName [nvarchar] (128)

,@RowID [int]

,@LoopStatus [int]

,@DML varchar(max)



SET @RowID=1

SET @LoopStatus=1



DECLARE @DuplicateIndexFind TABLE

(

[table] [nvarchar](257) NULL,

[index] [sysname] NULL,

[exactduplicate] [sysname] NULL,

[DbName] varchar(100) NULL

)



DECLARE @DatabaseList TABLE ([RowNo] [smallint] identity (1, 1)

,[DBName] [varchar](200))



INSERT INTO @DatabaseList

SELECT '['+[name]+']' FROM [master].[sys].[databases] WITH (NOLOCK)

WHERE [state_desc] = 'ONLINE'

AND [source_database_id] IS NULL

AND [database_id] > 4



WHILE @LoopStatus<>0

BEGIN

SELECT @DBName = [DBName]

FROM @DatabaseList WHERE [RowNo] = @RowID

IF @@ROWCOUNT=0

BEGIN

SET @LoopStatus=0

END

ELSE

BEGIN

SET @DML='USE '+ @DBName +CHAR(13)+';'+ '

with indexcols as

(

select object_id as id, index_id as indid, name,

(

select case keyno when 0 then NULL else colid end as [data()]

from '+ @DBName +'.sys.sysindexkeys' +' as k

where k.id = i.object_id

and k.indid = i.index_id

order by keyno, colid

for xml path('''')) as cols,

(

select case keyno when 0 then colid else NULL end as [data()]

from '+ @DBName +'.sys.sysindexkeys' +' as k

where k.id = i.object_id

and k.indid = i.index_id

order by colid

for xml path('''')

) as inc

from '+ @DBName +'.sys.indexes as i)

select

object_schema_name(c1.id) + ''.'' + object_name(c1.id) as ''table'',

c1.name as ''index'',

c2.name as ''exactduplicate''

from indexcols as c1

join indexcols as c2

on c1.id = c2.id

and c1.indid < c2.indid

and c1.cols = c2.cols

and c1.inc = c2.inc

order by object_schema_name(c1.id) + ''.'' + object_name(c1.id)'



INSERT INTO @DuplicateIndexFind([table] ,[index],[exactduplicate]) exec (@DML)



update @DuplicateIndexFind

set DbName=@DBName

where DbName is NULL



SET @RowID=@RowID+1

END

END



select @@Servername ServerName,DbName DatabaseName,[Table],[INDEX],ExactDuplicate from @DuplicateIndexFind


Comments

Post a Comment

Hi User,
Thanks for visiting My Blog and please provide your valuable feedback and subscribe for more updates. Please don't post any spam content or comments.
Thank You

Popular posts from this blog

SSRS INTERVIEW QUESTIONS

Q: What is SSRS? Ø   SSRS or SQL Server Reporting Service is a server-based report generation software systems from Microsoft and is part of Microsoft BI. Ø   It is used for preparing and delivering interactive and variety of reports. Ø   It is administered through an web based interface. Ø   Reporting services utilizes a web service interface for supporting and developing of customized reporting applications. Ø   SSRS lets you create very rich reports (Tabular/Graphical/Interactive) from various datasources with rich data visualization (Charts, Maps, sparklines) Ø   SSRS allows are reports to be exported in various formats (Excel, PDF, word etc) Q: Explain SSRS Architecture? Reporting services architecture comprises of integrated components. It is a multi-tiered, included with application, server and data layers. This architecture is scalable and modular. A single installation can be used across multiple computers. It includes the fo...

Exception deserializing the package "The process cannot access the file because it is being used by another process."

TITLE: Microsoft Visual Studio ------------------------------ Failed to start project ------------------------------ ADDITIONAL INFORMATION: Exception deserializing the package "The process cannot access the file 'E:\SSASCube\HistoricalDataLoad\HistoricalDataLoad\bin\Development\HistoricalDataLoad.ispac' because it is being used by another process.". (Microsoft.DataTransformationServices.VsIntegration) ------------------------------ The process cannot access the file 'E:\SSASCube\HistoricalDataLoad\HistoricalDataLoad\bin\Development\HistoricalDataLoad.ispac' because it is being used by another process. (mscorlib) ------------------------------ BUTTONS: OK ------------------------------ While running SSIS package i got the error “The process cannot access the file ‘*.ispac’ because it is being used by another process”. I tried to close SSDT and run it again but, I still got the same error while compiling. Then, after searching over internet, I got...

Failed to execute the package or element. Build errors were encountered

Error: TITLE: Microsoft Visual Studio ------------------------------ Failed to execute the package or element.   Build errors were encountered. For more information, see the Output window. ------------------------------ BUTTONS: OK ------------------------------   Solution: We tried to close SSDT and run it again but, we still got the same error while running SSIS package. Then, we need to follow bellow solution: Step 1: Go to Task Manager–> Details Tab. Step 2: Locate the process “ DtsDebugHost.exe “. Kill this process. There might be multiple instances of this process. Kill all of them. Step 3: Rerun SSIS package