e.g. EXEC USP_DropXMLIndexes 'Person', 'Contact'
CREATE PROCEDURE USP_DropXMLIndexes
@schemaname VARCHAR(128),
@tablename VARCHAR(128)
AS
-- USP_DropXMLIndexes by sql solace
DECLARE @sqlstring NVARCHAR(500)
WHILE EXISTS (SELECT *
FROM sys.internal_tables AS IT
JOIN sys.tables AS T
ON IT.PARENT_ID = T.OBJECT_ID
JOIN sys.schemas AS S
ON T.SCHEMA_ID = S.SCHEMA_ID
JOIN sys.xml_indexes AS XI
ON IT.PARENT_ID = XI.OBJECT_ID
AND IT.PARENT_MINOR_ID = XI.INDEX_ID
WHERE S.NAME = @schemaname
AND T.NAME = @tablename)
BEGIN
SELECT @sqlstring = 'DROP INDEX [' + XI.NAME + '] ON [' + S.NAME + '].[' + T.NAME + '] '
FROM sys.internal_tables AS IT
JOIN sys.tables AS T
ON IT.PARENT_ID = T.OBJECT_ID
JOIN sys.schemas AS S
ON T.SCHEMA_ID = S.SCHEMA_ID
JOIN sys.xml_indexes AS XI
ON IT.PARENT_ID = XI.OBJECT_ID
AND IT.PARENT_MINOR_ID = XI.INDEX_ID
WHERE S.NAME = @schemaname
AND T.NAME = @tablename
PRINT @sqlstring
EXECUTE sp_executesql @sqlstring
END
GO
No comments:
Post a Comment