2012-05-08 3 views
0

Как изменить полный текстовый каталог по его базе данных.Owner.Name полное имя каталога?Как сделать каталог ALTER FULLTEXT из динамически сгенерированного скрипта для всех баз данных на сервере

declare @db_name sysname; 
declare db cursor for 
select name from sys.Databases where name like 'myprefix%' 
open db 
fetch next from db into @db_name 
while @@fetch_status = 0 
begin 
    set @sql = 'ALTER FULLTEXT CATALOG [' + @db_name + '].dbo.IndexedContent REBUILD' 
    exec sp_executesql @sql 
    fetch next from db into @db_name 
end 
close db; 
deallocate db; 

Но SQL Server жалуется

Incorrect syntax near '.' 

документация на http://msdn.microsoft.com/en-us/library/ms176095.aspx не явно указать, если catalog_name может быть полным.

ответ

1

documentation говорит, что имя каталога является единственным элементом, то есть без схемы или префикса базы данных (в отличие от синтаксиса для CREATE TABLE, например). Поэтому вам, вероятно, необходимо сначала переключить контекст выполнения в правильную базу данных:

set @sql = 'USE ' + QUOTENAME(@db_name) + '; ALTER FULLTEXT CATALOG IndexedContent REBUILD;'