特定のデータベースでFULLTEXT INDEXが適用されているテーブルのリストを見つけるにはどうすればよいですか?
たとえば、次のようにFULLTEXT INDEXを有効または無効にできます。
ALTER FULLTEXT INDEX ON [dbo].[OBJECT_FACT] ENABLE
ALTER FULLTEXT INDEX ON [dbo].[OBJECT_FACT] DISABLE
FULLTEXT INDEX
のあるテーブルのリストを見つけるには:
SELECT
SCHEMA_NAME(t.schema_id) AS SchemaName,
t.name AS TableName,
c.name AS FTCatalogName ,
f.name AS FileGroupName,
i.name AS UniqueIdxName,
cl.name AS ColumnName
FROM
sys.tables t
INNER JOIN
sys.fulltext_indexes fi
ON
t.[object_id] = fi.[object_id]
INNER JOIN
sys.fulltext_index_columns ic
ON
ic.[object_id] = t.[object_id]
INNER JOIN
sys.columns cl
ON
ic.column_id = cl.column_id
AND ic.[object_id] = cl.[object_id]
INNER JOIN
sys.fulltext_catalogs c
ON
fi.fulltext_catalog_id = c.fulltext_catalog_id
INNER JOIN
sys.filegroups f
ON
fi.data_space_id = f.data_space_id
INNER JOIN
sys.indexes i
ON
fi.unique_index_id = i.index_id
AND fi.[object_id] = i.[object_id];
FULLTEXT INDEX
を有効または無効にするには、参照 msdn
sp_fulltext_table
[ @tabname= ] 'qualified_table_name'
, [ @action= ] 'action'
[
, [ @ftcat= ] 'fulltext_catalog_name'
, [ @keyname= ] 'unique_index_name'
]
推奨される方法は、非推奨のALTER FULLTEXT INDEX [myFTindex] {ENABLE/DISABLE}
の代わりにsp_fulltext_table
を使用することです。
Paulの答えは素晴らしく、私を大いに助けてくれましたが、なぜ私の一部が表示されなかったのかと思っていました。理由は、FTインデックスの一部がテーブルではなくインデックス付きビューにあったためです。
インデックス付きビューとテーブルを組み込むためのわずかな修正は次のようになります。
SELECT SCHEMA_NAME(o.schema_id) AS SchemaName,
o.name AS ObjectName,
c.name AS FTCatalogName,
f.name AS FileGroupName,
i.name AS UniqueIdxName,
cl.name AS ColumnName
FROM sys.objects o
INNER JOIN sys.fulltext_indexes fi
ON o.[object_id] = fi.[object_id]
INNER JOIN sys.fulltext_index_columns ic
ON ic.[object_id] = o.[object_id]
INNER JOIN sys.columns cl
ON ic.column_id = cl.column_id
AND ic.[object_id] = cl.[object_id]
INNER JOIN sys.fulltext_catalogs c
ON fi.fulltext_catalog_id = c.fulltext_catalog_id
INNER JOIN sys.filegroups f
ON fi.data_space_id = f.data_space_id
INNER JOIN sys.indexes i
ON fi.unique_index_id = i.index_id
AND fi.[object_id] = i.[object_id];