2017-10-04 4 views
-2

Azum SQLでAcumaticaデータベースをホストしています。高速検索文字列(左上のナビゲーションパネルの上部)で検索しようとすると、「検索を使用する前にフルテキストエンティティインデックスを構築する必要があります。インデックスを再構築してからやり直してください」という警告が表示されます。 「フルテキスト検索機能がデータベースで有効になっていません。フレーズまたはキーワードのリストによる検索が機能しない可能性があります。データベース管理者に連絡して機能を有効にすることができます。 ヘルプで検索するように指定しても、何らかの結果が返されますが、警告はまだ存在します。私が発見したAcumatica ERP設定ウィザードのアプリケーション、そのクラスAcumaticaDbKeeperMsSql、データベースhasFullTextCapabilityかどうかを確認するgetGenerateFirstScript方法を研究するAcumatica:Azure SQLでフルテキスト検索を有効にする

。そして何らかの理由でdbエンジンがAzureかどうかをチェックするだけです。そしてそれがAzureなら、その論理によればFull-Text対応ではありません。そのため、フルテキストカタログはAzure SQLデータベースには作成されず、フルテキスト機能はそのままでは機能しません。

ありがとうございます!

+0

ようこそstackoverflow。あなたが特定の問題を試したことの詳細を追加する方が良いでしょう。 – lkamal

+0

1.フルテキスト検索は、SQL Server 2016でローカルに有効になっていません。Acumatica dbを作成しました。検索中に警告に直面した。 2. Full-Textをインストールし、Acumatica UIを通してインデックスを再構築します。まだ警告を見た。 3.新しいdbを作成し、接続文字列をAcumatica UIを使用して新しいdb、再構築インデックスに変更しました。今はうまくいく。 4. Azure SQLで同じことを繰り返す方法がわからず、フルテキストをインストールした後でもポイント#1からのdbが機能しない理由を理解していない。 – andy7

+0

私が知る限り、フルテキストは各Azure SQLデータベースでデフォルトで有効になっています。 AcumaticaのUIから数回インデックスを再構築しました。運がない。 – andy7

答えて

0

私は、これは既知の問題であり、最も近いビルドで修正されると言われました。問題を修正する

発見手順は、手動で以下の通りです:

  1. は、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]となります。
  2. フルテキストカタログは自動的に再構築されます。以下の3つのSQLコマンドを定期的に実行します(それぞれ20〜30秒)。結果の数値が変化していることがわかります。変更が止まるまで待ちます。私のテスト環境では約5分かかりました。

    SELECT fulltextcatalogproperty('ft', 'IndexSize');

  3. SELECT fulltextcatalogproperty('ft', 'UniqueKeyCount');

    SELECT fulltextcatalogproperty('ft', 'ItemCount');

    次にキャッシュをクリアする(例えば、IISを介して)Acumaticaのinstanseを再起動します。

  4. Acumaticaアプリケーションにログインします。システム - >管理 - >フルテキストエンティティインデックスの再構築に進みます。 PROCESS ALLを実行します。完了するまで待ちます。
  5. それです。たとえば、検索文字列内の任意の請求書番号またはベンダー名を検索し、[すべてのエンティティで検索...]を選択します。

UPDATE 2017年10月6日

Acumatica開発者が手動修正するSQLスクリプト(下記)の拡張版を提供します。それは何らかの理由でシステムプロシージャーpp_EnableFullTextpp_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 
関連する問題