Помещение индекса полнотекстового поиска в представление с функцией - PullRequest
1 голос
/ 21 апреля 2009

Я использую SQL Server 2008, и у меня есть представление, которое выглядит так:

select ID, dbo.functionname(ID) from tablename

Я пытаюсь добавить к этому полнотекстовый индекс, но, похоже, у него нет уникального индекса, из которого я могу выйти. Tablename.ID является уникальным идентификатором.

Я попытался создать индекс для него, но он говорит, что не может просмотреть привязку схемы, потому что функция не привязана к схеме.

Что мне нужно сделать, чтобы создать полнотекстовый индекс?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2009

Чтобы иметь возможность создавать индексное представление, оно должно быть детерминированным, то есть должно быть гарантировано, что оно будет одинаковым при каждом его запросе.

Является ли ваша пользовательская функция детерминированной ?

Детерминизм пользовательских функций

Является ли пользовательская функция детерминированный или недетерминированный зависит от того, как закодирована функция. Пользовательские функции детерминированный, если:

* The function is schema-bound.

* All built-in or user-defined functions called by the user-defined

функция является детерминированной.

* The body of the function references no database objects outside

область действия функции. За Например, детерминированная функция не может ссылаться на таблицы, кроме переменные таблицы, которые являются локальными для функция.

* The function does not call any extended stored procedures.

Пользовательские функции, которые не соответствовать этим критериям помечены как недетерминирован. Встроенный недетерминированные функции не являются разрешено в теле пользовательского функции.

Является ли ваша функция SchemaBound?

alter function [dbo].[UserFunction] 
(@example int = 1 ) 
returns int
with schemabinding
as
begin
  return 1
end

Ваш взгляд на SchemaBound?

ALTER VIEW dbo.UserView
WITH SCHEMABINDING
AS
SELECT ID, [dbo].userFunction

Чтобы создать индексированное представление, вы должны сначала создать уникальный кластеризованный индекс (см. FAQ внизу) .

0 голосов
/ 28 апреля 2009

Полагаю, вы имеете в виду не «не» схему в комментариях выше Воссоздайте свой взгляд "С СХЕМОМ" Затем создайте уникальный кластерный индекс как объяснено здесь http://www.mssqltips.com/tip.asp?tip=1610 Затем попробуйте добавить свой полнотекстовый индекс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...