También activa el seguimiento de cambios para el indice. Tener precaución con esto, ya que se dispara un llenado del índice, lo cual sobrecarga el procesador del servidor de base de datos.
Por defecto utiliza un catálogo denominado GestarCatalog. El mismo debe ser creado previamente.
Ejemplo de llamada:
exec fulltext_createindex 'sys_fields_153'
Este procedimiento puede usarse para indexar las tablas SYS_DOCUMENTS y SYS_ATTACHMENTS, aunque en esta última el mismo no considerará el campo [FILE], el cual puede agregarse posteriormente de manera manual.
Código del procedimiento:
CREATE procedure [dbo].[FULLTEXT_CREATEINDEX](@table varchar(200), @catalog varchar(200) = 'GestarCatalog')
as
declare mycurs cursor for
select column_name from user_tab_columns
where table_name = @table and is_computed = 0 and
data_type in ('varchar', 'nvarchar', 'char', 'nchar', 'text', 'ntext')
declare @col varchar(200)
declare @sqlt varchar(1000)
declare @sqlc varchar(1000)
declare @pk varchar(200)
begin
set @table = upper(@table)
set @sqlt = ''
if objectproperty(object_id(@table), 'TableHasActiveFulltextIndex') = 1
begin
set @sqlt = 'sp_fulltext_table N''[dbo].[' + @table + ']'', N''drop'''
execute (@sqlt)
end
select @pk = NAME from SYSOBJECTS where XTYPE = 'PK' and PARENT_OBJ =
(select ID from SYSOBJECTS where NAME = @table)
open mycurs
fetch next from mycurs into @col
if @@fetch_status = 0
begin
set @sqlt = 'sp_fulltext_table N''[dbo].[' + @table + ']'', N''create'', N''' + @catalog + ''', N''' + @pk + ''''
execute (@sqlt)
end
while @@fetch_status = 0
begin
set @sqlc = 'sp_fulltext_column N''[dbo].[' + @table + ']'', N''' + @col + ''', ''add'', 0x0c0a'
execute (@sqlc)
fetch next from mycurs into @col
end
if @sqlt <> ''
begin
set @sqlt = 'sp_fulltext_table N''[dbo].[' + @table + ']'', N''activate'''
execute (@sqlt)
set @sqlt = 'sp_fulltext_table N''[dbo].[' + @table + ']'', N''start_change_tracking'''
execute (@sqlt)
set @sqlt = 'sp_fulltext_table N''[dbo].[' + @table + ']'', N''start_background_updateindex'''
execute (@sqlt)
end
close mycurs
deallocate mycurs
end
No hay comentarios:
Publicar un comentario