私は、これは既知の問題であり、最も近いビルドで修正されると言われました。問題を修正する
発見手順は、手動で以下の通りです:
- は、AzureのSQLデータベースに次のスクリプトを実行します。
CREATE FULLTEXT CATALOG [ft] WITH ACCENT_SENSITIVITY = ON AS DEFAULT
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[SearchIndex] ([Content]) KEY INDEX [IX_SearchIndex]'
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[WikiRevision] ([PlainText]) KEY INDEX [WikiRevision_UK2]'
- あなたが得た場合フルテキストインデックスがすでに存在するというエラーです。上記の次のスクリプトを実行する前にドロップしてください。たとえば、
DROP FULLTEXT INDEX ON [dbo].[WikiRevision]
となります。
フルテキストカタログは自動的に再構築されます。以下の3つのSQLコマンドを定期的に実行します(それぞれ20〜30秒)。結果の数値が変化していることがわかります。変更が止まるまで待ちます。私のテスト環境では約5分かかりました。
SELECT fulltextcatalogproperty('ft', 'IndexSize');
SELECT fulltextcatalogproperty('ft', 'UniqueKeyCount');
SELECT fulltextcatalogproperty('ft', 'ItemCount');
次にキャッシュをクリアする(例えば、IISを介して)Acumaticaのinstanseを再起動します。
- Acumaticaアプリケーションにログインします。システム - >管理 - >フルテキストエンティティインデックスの再構築に進みます。 PROCESS ALLを実行します。完了するまで待ちます。
- それです。たとえば、検索文字列内の任意の請求書番号またはベンダー名を検索し、[すべてのエンティティで検索...]を選択します。
UPDATE 2017年10月6日
Acumatica開発者が手動修正するSQLスクリプト(下記)の拡張版を提供します。それは何らかの理由でシステムプロシージャーpp_EnableFullText
とpp_DisableFullText
を再作成します。 Acumaticaバージョン6.10.1219の研究。
--Recreating indexes
if not exists (SELECT * FROM sys.indexes WHERE name = 'IX_SearchIndex') begin
UPDATE dbo.SearchIndex SET IndexID = NEWID()
CREATE UNIQUE NONCLUSTERED INDEX [IX_SearchIndex] ON [dbo].[SearchIndex] ([IndexID])
if (SELECT count(*) from sys.fulltext_catalogs where serverproperty('isfulltextinstalled') = 1) > 0
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[SearchIndex] ([Content]) KEY INDEX [IX_SearchIndex]'
end
else Begin
if (SELECT count(*) from sys.fulltext_catalogs where serverproperty('isfulltextinstalled') = 1) > 0
if not exists (SELECT * FROM sys.fulltext_indexes f
INNER JOIN sys.indexes i on f.Unique_Index_id = i.Index_id and i.object_id=f.object_id
Where f.object_id = object_id('SearchIndex') and i.name = 'IX_SearchIndex')
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[SearchIndex] ([Content]) KEY INDEX [IX_SearchIndex]'
End
if not exists (SELECT * FROM sys.indexes WHERE name = 'WikiRevision_UK2') begin
UPDATE dbo.WikiRevision SET UID = NEWID()
CREATE UNIQUE NONCLUSTERED INDEX [WikiRevision_UK2] ON [dbo].[WikiRevision] ([UID])
if (SELECT count(*) from sys.fulltext_catalogs where serverproperty('isfulltextinstalled') = 1) > 0
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[WikiRevision] ([PlainText]) KEY INDEX [WikiRevision_UK2]'
end
else Begin
if (SELECT count(*) from sys.fulltext_catalogs where serverproperty('isfulltextinstalled') = 1) > 0
if not exists (SELECT * FROM sys.fulltext_indexes f
INNER JOIN sys.indexes i on f.Unique_Index_id = i.Index_id and i.object_id=f.object_id
Where f.object_id = object_id('WikiRevision') and i.name = 'WikiRevision_UK2')
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[WikiRevision] ([PlainText]) KEY INDEX [WikiRevision_UK2]'
End
GO
--Recreation System Procedures
if exists(select * from sys.objects where object_id = object_id('dbo.pp_EnableFullText') and objectproperty(object_id,'IsProcedure')=1)
drop proc dbo.pp_EnableFullText
go
CREATE PROCEDURE dbo.pp_EnableFullText AS
if not exists (SELECT * FROM sys.indexes WHERE name = 'IX_SearchIndex') begin
UPDATE dbo.SearchIndex SET IndexID = NEWID()
CREATE UNIQUE NONCLUSTERED INDEX [IX_SearchIndex] ON [dbo].[SearchIndex] ([IndexID])
if (SELECT count(*) from sys.fulltext_catalogs where serverproperty('isfulltextinstalled') = 1) > 0
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[SearchIndex] ([Content]) KEY INDEX [IX_SearchIndex]'
end
if not exists (SELECT * FROM sys.indexes WHERE name = 'WikiRevision_UK2') begin
UPDATE dbo.WikiRevision SET UID = NEWID()
CREATE UNIQUE NONCLUSTERED INDEX [WikiRevision_UK2] ON [dbo].[WikiRevision] ([UID])
if (SELECT count(*) from sys.fulltext_catalogs where serverproperty('isfulltextinstalled') = 1) > 0
exec sp_executesql N'CREATE FULLTEXT INDEX ON [dbo].[WikiRevision] ([PlainText]) KEY INDEX [WikiRevision_UK2]'
end
GO
if exists(select * from sys.objects where object_id = object_id('dbo.pp_DisableFullText') and objectproperty(object_id,'IsProcedure')=1)
drop proc dbo.pp_DisableFullText
go
CREATE PROCEDURE dbo.pp_DisableFullText AS
if exists(SELECT * FROM sys.fulltext_indexes fi JOIN sys.indexes i ON i.[object_id] = fi.[object_id] AND i.[name] = 'IX_SearchIndex')
exec sp_executesql N'DROP FULLTEXT INDEX ON [dbo].[SearchIndex]'
if exists(select * from sys.indexes where name = 'IX_SearchIndex')
DROP INDEX [IX_SearchIndex] ON [dbo].[SearchIndex]
if exists(SELECT * FROM sys.fulltext_indexes fi JOIN sys.indexes i ON i.[object_id] = fi.[object_id] AND i.[name] = 'WikiRevision_UK2')
exec sp_executesql N'DROP FULLTEXT INDEX ON [dbo].[WikiRevision]'
if exists(select * from sys.indexes where name = 'WikiRevision_UK2')
DROP INDEX [WikiRevision_UK2] ON [dbo].[WikiRevision]
GO
ようこそstackoverflow。あなたが特定の問題を試したことの詳細を追加する方が良いでしょう。 – lkamal
1.フルテキスト検索は、SQL Server 2016でローカルに有効になっていません。Acumatica dbを作成しました。検索中に警告に直面した。 2. Full-Textをインストールし、Acumatica UIを通してインデックスを再構築します。まだ警告を見た。 3.新しいdbを作成し、接続文字列をAcumatica UIを使用して新しいdb、再構築インデックスに変更しました。今はうまくいく。 4. Azure SQLで同じことを繰り返す方法がわからず、フルテキストをインストールした後でもポイント#1からのdbが機能しない理由を理解していない。 – andy7
私が知る限り、フルテキストは各Azure SQLデータベースでデフォルトで有効になっています。 AcumaticaのUIから数回インデックスを再構築しました。運がない。 – andy7