4

全文索引を作成したいのですが、索引名がすべてのデータベースで同じかどうかわかりません。そこで、以下の select を記述して、インデックスの名前を取得する予定です。

DECLARE @keyIndex NVARCHAR(100)
SELECT @keyIndex = name FROM sysobjects WHERE xtype = 'PK' AND parent_obj = OBJECT_ID(N'[dbo].[Table1]')

以下は、私が試したフルテキスト インデックスの Create ステートメントです。

CREATE FULLTEXT INDEX ON dbo.Table1
    (
        [Name] Language 1033,
        [Description] Language 1033
    ) 
    KEY INDEX [@keyIndex] 
    WITH STOPLIST = SYSTEM, CHANGE_TRACKING AUTO;

次のエラーが発生します。

Msg 7653, Level 16, State 1, Line 11
'@keyIndex' is not a valid index to enforce a full-text search key. A full-text search key must be a unique, non-nullable, single-column index which is not offline, is not defined on a non-deterministic or imprecise nonpersisted computed column, does not have a filter, and has maximum size of 900 bytes. Choose another index for the full-text key.

キー インデックスの値を動的に挿入する方法について、助けが必要です。

4

1 に答える 1

1

文字列を手動で作成してから実行するだけです。

DECLARE @SQLString nvarchar(1000)
DECLARE @ParmDefinition nvarchar(1000)
DECLARE @keyIndex nvarchar(100);
set @keyIndex = 'Id'
SET @SQLString =
     N'CREATE FULLTEXT INDEX ON dbo.objects
    (
        [Name] Language 1033,
        [Description] Language 1033
    ) 
    KEY INDEX ' + @keyIndex +N' 
    WITH STOPLIST = SYSTEM, CHANGE_TRACKING AUTO;';
EXEC(@SQLString)
于 2013-07-03T09:48:34.730 に答える