2009-04-21 3 views
1

とビュー上の全文検索インデックスを置く:私は、フルテキストを配置しようとしている私はSQL Server 2008を使用していると私はこのようになりますビュー持つ機能

select ID, dbo.functionname(ID) from tablename 

をこれにインデックスを付けることができますが、私は離れることができるユニークなインデックスを持っていないようです。 tablename.IDは一意の識別子です。

インデックスを作成しようとしましたが、スキーマバインドビューが機能しないためスキーマバインドできません。

フルテキストインデックスを作成するには、何が必要ですか?

+0

インデックス付きのビューにしましたか? (結果はDBのファイルシステムに保存されるので)? –

+0

私はその上にインデックスを作成しようとしましたが、スキーマがスキーマバインドされているため、ビューをスキーマバインドできません。 – ajma

+0

インデックス付きビューを作成できるようにスキーマ名を追加する必要があります IDを選択し、[YourSchema] .tablenameからdbo.functionname(ID)を入力してください –

答えて

2

インデックスビューを作成できるようにするには、ビューが決定的でなければなりません。つまり、そのビューのすべてのクエリで同じことが保証されている必要があります。

あなたのユーザ機能はdeterministicですか?

ユーザー定義関数の決定論

ユーザー定義関数が 決定論的または 非決定的であるかどうかは、関数がコード化された方法によって異なります。 ユーザー定義関数は、ある場合 決定論:

* 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 

インデックス付きビューを作成するには、まずunique clustered index(See FAQ a bottom)を作成する必要があります。

0

は、私がここにhttp://www.mssqltips.com/tip.asp?tip=1610 は、その後、あなたのフルテキストインデックスを追加してみてください説明したように、あなたが次にユニークclusterredインデックス を作成 上記のコメントでは、スキーマが 「SCHEMABINDING WITH」あなたのビューを再作成して「いない」mean't推測

関連する問題