Indexování dat ze služby Azure SQL Database
V tomto článku se dozvíte, jak nakonfigurovat indexer , který importuje obsah ze služby Azure SQL Database nebo spravované instance Azure SQL a umožňuje vyhledávání ve službě Azure AI Search.
Tento článek doplňuje vytvoření indexeru s informacemi specifickými pro Azure SQL. Pomocí webu Azure Portal a rozhraní REST API demonstruje třídílný pracovní postup společný pro všechny indexery: vytvoření zdroje dat, vytvoření indexu, vytvoření indexeru. Extrakce dat nastane, když odešlete požadavek Create Indexer.
Tento článek obsahuje také:
Popis zásad detekce změn podporovaných indexerem Azure SQL, abyste mohli nastavit přírůstkové indexování.
V části nejčastější dotazy najdete odpovědi na otázky týkající se kompatibility funkcí.
Poznámka:
Synchronizace dat v reálném čase není s indexerem možná. Indexer může tabulku maximálně každých pět minut přeindexovat. Pokud se aktualizace dat musí v indexu projevit dříve, doporučujeme nasdílit aktualizované řádky přímo.
Požadavky
Databáze Azure SQL s daty v jedné tabulce nebo zobrazení nebo ve spravované instanci SQL s veřejným koncovým bodem.
Tabulku použijte, pokud jsou vaše data velká nebo pokud potřebujete přírůstkové indexování pomocí nativních funkcí detekce změn SQL.
Pokud potřebujete konsolidovat data z více tabulek, použijte zobrazení. Velká zobrazení nejsou ideální pro indexer SQL. Alternativním řešením je vytvořit novou tabulku jen pro příjem dat do indexu Azure AI Search. Pomocí integrovaného sledování změn SQL můžete sledovat nové a změněné řádky, což je snazší implementovat než horní mez.
Oprávnění ke čtení Azure AI Search podporuje ověřování SQL Serveru, kde jsou v připojovací řetězec zadané uživatelské jméno a heslo. Případně můžete nastavit spravovanou identitu a použít role Azure.
Abyste mohli projít příklady v tomto článku, potřebujete Azure Portal nebo klienta REST. Pokud používáte Azure Portal, ujistěte se, že je v bráně firewall Azure SQL povolený přístup ke všem veřejným sítím a že má klient přístup přes příchozí pravidlo. Pro klienta REST, který běží místně, nakonfigurujte bránu firewall SQL Serveru tak, aby umožňovala příchozí přístup z IP adresy vašeho zařízení. Další přístupy k vytvoření indexeru Azure SQL zahrnují sady Azure SDK.
Vyzkoušení s ukázkovými daty
Pomocí těchto pokynů vytvořte a načtěte tabulku ve službě Azure SQL Database pro účely testování.
Stáhněte si hotels-azure-sql.sql z GitHubu a vytvořte tabulku ve službě Azure SQL Database, která obsahuje podmnožinu ukázkových datových sad hotelů.
Přihlaste se k webu Azure Portal a vytvořte databázi a databázový server Azure SQL. Zvažte konfiguraci ověřování SQL Serveru i ověřování Microsoft Entra ID. Pokud nemáte oprávnění ke konfiguraci rolí v Azure, můžete jako alternativní řešení použít ověřování SQL.
Nakonfigurujte bránu firewall serveru na všechny příchozí požadavky z místního zařízení.
V databázi Azure SQL vyberte Editor dotazů (Preview) a pak vyberte Nový dotaz.
Vložte a spusťte skript T-SQL, který vytvoří tabulku hotelů.
CREATE TABLE tbl_hotels ( Id TINYINT PRIMARY KEY, Modified DateTime NULL DEFAULT '0000-00-00 00:00:00', IsDeleted TINYINT, HotelName VARCHAR(40), Category VARCHAR(20), City VARCHAR(30), State VARCHAR(4), Description VARCHAR(500) );
Vložte a spusťte skript T-SQL, který vkládá záznamy.
-- Insert rows INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (1, CURRENT_TIMESTAMP, 0, 'Stay-Kay City Hotel', 'Boutique', 'New York', 'NY', 'This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of Americas most attractive and cosmopolitan cities.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (10, CURRENT_TIMESTAMP, 0, 'Countryside Hotel', 'Extended-Stay', 'Durham', 'NC', 'Save up to 50% off traditional hotels. Free WiFi, great location near downtown, full kitchen, washer & dryer, 24\/7 support, bowling alley, fitness center and more.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (11, CURRENT_TIMESTAMP, 0, 'Royal Cottage Resort', 'Extended-Stay', 'Bothell', 'WA', 'Your home away from home. Brand new fully equipped premium rooms, fast WiFi, full kitchen, washer & dryer, fitness center. Inner courtyard includes water features and outdoor seating. All units include fireplaces and small outdoor balconies. Pets accepted.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (12, CURRENT_TIMESTAMP, 0, 'Winter Panorama Resort', 'Resort and Spa', 'Wilsonville', 'OR', 'Plenty of great skiing, outdoor ice skating, sleigh rides, tubing and snow biking. Yoga, group exercise classes and outdoor hockey are available year-round, plus numerous options for shopping as well as great spa services. Newly-renovated with large rooms, free 24-hr airport shuttle & a new restaurant. Rooms\/suites offer mini-fridges & 49-inch HDTVs.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (13, CURRENT_TIMESTAMP, 0, 'Luxury Lion Resort', 'Luxury', 'St. Louis', 'MO', 'Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (14, CURRENT_TIMESTAMP, 0, 'Twin Vortex Hotel', 'Luxury', 'Dallas', 'TX', 'New experience in the making. Be the first to experience the luxury of the Twin Vortex. Reserve one of our newly-renovated guest rooms today.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (15, CURRENT_TIMESTAMP, 0, 'By the Market Hotel', 'Budget', 'New York', 'NY', 'Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (16, CURRENT_TIMESTAMP, 0, 'Double Sanctuary Resort', 'Resort and Spa', 'Seattle', 'WA', '5 Star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in\/out, Fitness Center & espresso in room.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (17, CURRENT_TIMESTAMP, 0, 'City Skyline Antiquity Hotel', 'Boutique', 'New York', 'NY', 'In vogue since 1888, the Antiquity Hotel takes you back to bygone era. From the crystal chandeliers that adorn the Green Room, to the arched ceilings of the Grand Hall, the elegance of old New York beckons. Elevate Your Experience. Upgrade to a premiere city skyline view for less, where old world charm combines with dramatic views of the city, local cathedral and midtown.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (18, CURRENT_TIMESTAMP, 0, 'Ocean Water Resort & Spa', 'Luxury', 'Tampa', 'FL', 'New Luxury Hotel for the vacation of a lifetime. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (19, CURRENT_TIMESTAMP, 0, 'Economy Universe Motel', 'Budget', 'Redmond', 'WA', 'Local, family-run hotel in bustling downtown Redmond. We are a pet-friendly establishment, near expansive Marymoor park, haven to pet owners, joggers, and sports enthusiasts. Close to the highway and just a short drive away from major cities.'); INSERT INTO tbl_hotels (Id, Modified, IsDeleted, HotelName, Category, City, State, Description) VALUES (20, CURRENT_TIMESTAMP, 0, 'Delete Me Hotel', 'Unknown', 'Nowhere', 'XX', 'Test-case row for change detection and delete detection . For change detection, modify any value, and then re-run the indexer. For soft-delete, change IsDelete from zero to a one, and then re-run the indexer.');
Spuštěním dotazu potvrďte odeslání.
SELECT Description FROM tbl_hotels;
Měly by se zobrazit výsledky podobné následujícímu snímku obrazovky.
Pole Popis poskytuje nejrozsáhodnější obsah. Toto pole byste měli cílit na fulltextové vyhledávání a volitelnou vektorizaci.
Teď, když máte databázovou tabulku, můžete k indexování dat použít Azure Portal, klienta REST nebo sadu Azure SDK.
Tip
Další prostředek, který poskytuje ukázkový obsah a kód, najdete v Azure-Samples/SQL-AI-samples.
Použití portálu Azure Portal
K automatizaci indexování z tabulky nebo zobrazení databáze SQL můžete použít průvodce importem dat nebo průvodce importem a vektorizací dat . Konfigurace zdroje dat je pro oba průvodce podobná.
V části Připojit k datům vyberte nebo ověřte, že typ zdroje dat je Azure SQL Database nebo databáze SQL.
Název zdroje dat odkazuje na objekt připojení zdroje dat ve službě Azure AI Search. Pokud použijete průvodce vektorem, název zdroje dat se automaticky vygeneruje pomocí vlastní předpony zadané na konci pracovního postupu průvodce.
Zadejte název serveru, název databáze a název tabulky nebo zobrazení.
Azure Portal ověří připojení. Pokud je databáze pozastavená kvůli nečinnosti, přejděte na stránku databázového serveru a ujistěte se, že je stav databáze online. K aktivaci databáze můžete spustit dotaz na libovolnou tabulku.
Zadejte metodu ověřování, a to buď přihlášení k SQL Serveru definované během instalace serveru, nebo spravovanou identitu.
Pokud službu Azure AI Search nakonfigurujete tak, aby používala spravovanou identitu, a vytvoříte přiřazení role na databázovém serveru, který udělí identitě oprávnění přispěvatele SQL Serveru nebo přispěvatele databáze SQL, může se váš indexer připojit k Azure SQL pomocí ID a rolí Microsoft Entra.
V průvodci importem a vektorizací dat můžete zadat možnosti sledování změn a odstranění.
Sledování odstranění je založené na obnovitelném odstranění pomocí vlastních metadat.
Sledování změn je založené na integrovaném sledování změn SQL Serveru nebo sledování změn s vysokou hladinou.
Pokračujte zbývajícími kroky a dokončete průvodce:
Použití rozhraní REST API
Tato část ukazuje volání rozhraní REST API, která vytvářejí zdroj dat, index a indexer.
Definování zdroje dat
Definice zdroje dat určuje data, která se mají indexovat, přihlašovací údaje a zásady pro identifikaci změn v datech. Zdroj dat je definován jako nezávislý prostředek, aby ho mohl používat více indexerů.
Vytvořte zdroj dat nebo vytvořte nebo aktualizujte zdroj dat a nastavte jeho definici:
POST https://myservice.search.windows.net/datasources?api-version=2024-07-01 Content-Type: application/json api-key: admin-key { "name" : "myazuresqldatasource", "description" : "A database for testing Azure AI Search indexes.", "type" : "azuresql", "credentials" : { "connectionString" : "Server=tcp:<your server>.database.windows.net,1433;Database=<your database>;User ID=<your user name>;Password=<your password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" }, "container" : { "name" : "name of the table or view that you want to index", "query" : null (not supported in the Azure SQL indexer) }, "dataChangeDetectionPolicy": null, "dataDeletionDetectionPolicy": null, "encryptionKey": null, "identity": null }
Zadejte jedinečný název zdroje dat, který se řídí konvencemi vytváření názvů ve službě Azure AI Search.
Nastavte "typ" na
"azuresql"
(povinné).Nastavte přihlašovací údaje na připojovací řetězec:
Úplný přístup připojovací řetězec získáte z webu Azure Portal. Použijte tuto
ADO.NET connection string
možnost. Nastavte uživatelské jméno a heslo.Případně můžete zadat spravovanou identitu připojovací řetězec, která neobsahuje tajné kódy databáze s následujícím formátem:
Initial Catalog|Database=<your database name>;ResourceId=/subscriptions/<your subscription ID>/resourceGroups/<your resource group name>/providers/Microsoft.Sql/servers/<your SQL Server name>/;Connection Timeout=connection timeout length;
.
Další informace najdete v tématu Připojení k indexeru služby Azure SQL Database pomocí spravované identity.
Přidání vyhledávacích polí do indexu
Do indexu vyhledávání přidejte pole, která odpovídají polím v databázi SQL. Ujistěte se, že schéma indexu vyhledávání je kompatibilní se zdrojovým schématem pomocí ekvivalentních datových typů.
Vytvořte nebo aktualizujte index a definujte vyhledávací pole, která ukládají data:
POST https://[service name].search.windows.net/indexes?api-version=2024-07-01 Content-Type: application/json api-key: [Search service admin key] { "name": "mysearchindex", "fields": [{ "name": "id", "type": "Edm.String", "key": true, "searchable": false }, { "name": "description", "type": "Edm.String", "filterable": false, "searchable": true, "sortable": false, "facetable": false, "suggestions": true } ] }
Vytvořte pole klíče dokumentu ("key": true), které jednoznačně identifikuje každý vyhledávací dokument. Toto je jediné pole, které je povinné v indexu vyhledávání. Primární klíč tabulky se obvykle mapuje na pole s klíčem indexu. Klíč dokumentu musí být jedinečný a nesmí mít hodnotu null. Hodnoty můžou být číselné ve zdrojových datech, ale v indexu vyhledávání je klíč vždy řetězec.
Vytvořte další pole pro přidání prohledávatelnějšího obsahu. Pokyny najdete v tématu Vytvoření indexu .
Mapování datových typů
Datový typ SQL | Typy polí Azure AI Search | Notes |
---|---|---|
bitové | Edm.Boolean, Edm.String | |
int, smallint, tinyint | Edm.Int32, Edm.Int64, Edm.String | |
bigint | Edm.Int64, Edm.String | |
real, float | Edm.Double, Edm.String | |
smallmoney, money decimal numeric | Edm.String | Azure AI Search nepodporuje převod desetinných typů, Edm.Double protože by tak ztratil přesnost. |
char, nchar, varchar, nvarchar | Edm.String Collection(Edm.String) |
Řetězec SQL lze použít k naplnění pole Collection(Edm.String ), pokud řetězec představuje pole JSON řetězců: ["red", "white", "blue"] |
smalldatetime, datetime, datetime2, date, datetimeoffset | Edm.DateTimeOffset, Edm.String | |
uniqueidentifer | Edm.String | |
zeměpisné oblasti. | Edm.GeographyPoint | Podporují se pouze zeměpisné instance typu POINT s protokolem SRID 4326 (což je výchozí nastavení). |
rowversion | Nelze použít | Sloupce verze řádků nejde uložit do indexu vyhledávání, ale dají se použít ke sledování změn. |
time, timespan, binary, varbinary, image, xml, geometry, CLR types | Nelze použít | Nepodporováno |
Konfigurace a spuštění indexeru Azure SQL
Po vytvoření indexu a zdroje dat můžete indexer vytvořit. Konfigurace indexeru určuje vstupy, parametry a vlastnosti, které řídí chování doby běhu.
Vytvořte nebo aktualizujte indexer tak, že ho pojmenujte a odkazujete na zdroj dat a cílový index:
POST https://[service name].search.windows.net/indexers?api-version=2024-07-01 Content-Type: application/json api-key: [search service admin key] { "name" : "[my-sqldb-indexer]", "dataSourceName" : "[my-sqldb-ds]", "targetIndexName" : "[my-search-index]", "disabled": null, "schedule": null, "parameters": { "batchSize": null, "maxFailedItems": 0, "maxFailedItemsPerBatch": 0, "base64EncodeKeys": false, "configuration": { "queryTimeout": "00:04:00", "convertHighWaterMarkToRowVersion": false, "disableOrderByHighWaterMarkColumn": false } }, "fieldMappings": [], "encryptionKey": null }
V části parametrů má oddíl konfigurace parametry specifické pro Azure SQL:
Výchozí časový limit dotazu pro spuštění dotazu SQL je 5 minut, který můžete přepsat.
"convertHighWaterMarkToRowVersion" optimalizuje zásady detekce změn high water mark. Zásady detekce změn jsou nastavené ve zdroji dat. Pokud používáte nativní zásady detekce změn, nemá tento parametr žádný vliv.
"disableOrderByHighWaterMarkColumn" způsobí, že dotaz SQL používaný zásadami horní značky vody vynechá klauzuli ORDER BY. Pokud používáte nativní zásady detekce změn, nemá tento parametr žádný vliv.
Určete mapování polí, pokud existují rozdíly v názvu nebo typu pole nebo pokud potřebujete v indexu vyhledávání více verzí zdrojového pole.
Další informace o dalších vlastnostech najdete v tématu Vytvoření indexeru .
Indexer se spustí automaticky při jeho vytvoření. Můžete tomu zabránit nastavením "zakázáno" na hodnotu true. Pokud chcete řídit provádění indexeru, spusťte indexer na vyžádání nebo ho umístěte do plánu.
Kontrola stavu indexeru
Pokud chcete monitorovat stav indexeru a historii spuštění, zkontrolujte historii spuštění indexeru na webu Azure Portal nebo odešlete požadavek REST API na získání stavu indexeru.
Na stránce vyhledávací služby otevřete indexery správy>vyhledávání.
Vyberte indexer pro přístup ke konfiguraci a historii spuštění.
Výběrem konkrétní úlohy indexeru zobrazíte podrobnosti, upozornění a chyby.
Historie provádění obsahuje až 50 naposledy dokončených spuštění, které jsou seřazeny v obráceném chronologickém pořadí tak, aby poslední spuštění bylo první.
Indexování nových, změněných a odstraněných řádků
Pokud vaše databáze SQL podporuje sledování změn, může indexer vyhledávání vyzvednout pouze nový a aktualizovaný obsah při následných spuštěních indexeru.
Chcete-li povolit přírůstkové indexování, nastavte vlastnost dataChangeDetectionPolicy v definici zdroje dat. Tato vlastnost říká indexeru, který mechanismus sledování změn se používá v tabulce nebo zobrazení.
Pro indexery Azure SQL existují dvě zásady detekce změn:
SqlIntegratedChangeTrackingPolicy (platí jenom pro tabulky)
HighWaterMarkChangeDetectionPolicy (funguje pro tabulky a zobrazení)
Integrované zásady sledování změn SQL
Pro efektivitu a schopnost identifikovat odstraněné řádky doporučujeme použít sqlIntegratedChangeTrackingPolicy.
Požadavky na databázi:
- SQL Server 2012 SP3 nebo novější, pokud používáte SQL Server na virtuálních počítačích Azure
- Azure SQL Database nebo SQL Managed Instance
- Pouze tabulky (bez zobrazení)
- V databázi povolte sledování změn pro tabulku.
- V tabulce není složený primární klíč (primární klíč obsahující více než jeden sloupec).
- V tabulce nejsou žádné clusterované indexy. Alternativním řešením může být vyřazení a opětovné vytvoření jakéhokoli clusterovaného indexu jako neclusterovaného indexu, ale výkon může být ve zdroji ovlivněn v porovnání s clusterovaným indexem.
Zásady detekce změn se přidají do definic zdrojů dat. Pokud chcete použít tuto zásadu, vytvořte nebo aktualizujte zdroj dat takto:
POST https://myservice.search.windows.net/datasources?api-version=2024-07-01
Content-Type: application/json
api-key: admin-key
{
"name" : "myazuresqldatasource",
"type" : "azuresql",
"credentials" : { "connectionString" : "connection string" },
"container" : { "name" : "table name" },
"dataChangeDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.SqlIntegratedChangeTrackingPolicy"
}
}
Při použití integrovaných zásad sledování změn SQL nezadávejte samostatné zásady detekce odstranění dat. Integrované zásady sledování změn SQL mají integrovanou podporu pro identifikaci odstraněných řádků. Aby se však odstraněné řádky detekovaly automaticky, musí být klíč dokumentu v indexu vyhledávání stejný jako primární klíč v tabulce SQL.
Poznámka:
Při použití funkce TRUNCATE TABLE k odebrání velkého počtu řádků z tabulky SQL je potřeba obnovit indexer, aby se obnovil stav sledování změn, aby se odebralo odstranění řádků.
Zásady detekce změn horních znamétek
Tato zásada detekce změn závisí na sloupci "Horní značka" v tabulce nebo zobrazení, které zachycuje verzi nebo čas poslední aktualizace řádku. Pokud používáte zobrazení, musíte použít zásadu horní značky.
Sloupec horní značky musí splňovat následující požadavky:
- Všechna vložení určují hodnotu sloupce.
- Všechny aktualizace položky také změní hodnotu sloupce.
- Hodnota tohoto sloupce se zvyšuje při každém vložení nebo aktualizaci.
- Dotazy s následujícími klauzulemi WHERE a ORDER BY je možné efektivně spouštět:
WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]
Poznámka:
Pro sloupec horní meze důrazně doporučujeme použít datový typ rowversion . Pokud se použije jakýkoli jiný datový typ, sledování změn nezaručuje zachycení všech změn v přítomnosti transakcí spuštěných souběžně s dotazem indexeru. Při použití rowversion v konfiguraci s replikami jen pro čtení musíte indexer nasměrovat na primární repliku. Pro scénáře synchronizace dat je možné použít pouze primární repliku.
Zásady detekce změn se přidají do definic zdrojů dat. Pokud chcete použít tuto zásadu, vytvořte nebo aktualizujte zdroj dat takto:
POST https://myservice.search.windows.net/datasources?api-version=2024-07-01
Content-Type: application/json
api-key: admin-key
{
"name" : "myazuresqldatasource",
"type" : "azuresql",
"credentials" : { "connectionString" : "connection string" },
"container" : { "name" : "table or view name" },
"dataChangeDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
"highWaterMarkColumnName" : "[a rowversion or last_updated column name]"
}
}
Poznámka:
Pokud zdrojová tabulka nemá index ve sloupci horní meze, může dojít k vypršení časového limitu dotazů používaných indexerem SQL. Konkrétně klauzule vyžaduje efektivní ORDER BY [High Water Mark Column]
spuštění indexu, pokud tabulka obsahuje mnoho řádků.
convertHighWaterMarkToRowVersion
Pokud pro sloupec horní meze používáte datový typ rowversion , zvažte nastavení vlastnosti v konfiguraci indexeru convertHighWaterMarkToRowVersion
. Nastavení této vlastnosti na hodnotu true má za následek následující chování:
Používá datový typ rowversion pro sloupec horní značky v dotazu SQL indexeru. Použití správného datového typu zlepšuje výkon dotazů indexeru.
Odečte jednu z hodnoty rowversion před spuštěním dotazu indexeru. Zobrazení s spojeními 1:N můžou obsahovat řádky s duplicitními hodnotami rowversion. Odečtením jednoho z nich zajistíte, že dotaz indexeru tyto řádky nezmešká.
Pokud chcete tuto vlastnost povolit, vytvořte nebo aktualizujte indexer pomocí následující konfigurace:
{
... other indexer definition properties
"parameters" : {
"configuration" : { "convertHighWaterMarkToRowVersion" : true } }
}
queryTimeout
Pokud dojde k chybám časového limitu queryTimeout
, nastavte nastavení konfigurace indexeru na hodnotu vyšší než výchozí 5minutový časový limit. Pokud chcete například nastavit časový limit na 10 minut, vytvořte nebo aktualizujte indexer pomocí následující konfigurace:
{
... other indexer definition properties
"parameters" : {
"configuration" : { "queryTimeout" : "00:10:00" } }
}
disableOrderByHighWaterMarkColumn
Klauzuli ORDER BY [High Water Mark Column]
můžete také zakázat. To ale nedoporučujeme, protože pokud je spuštění indexeru přerušeno chybou, indexer musí znovu zpracovat všechny řádky, pokud se spustí později, i když indexer už zpracoval téměř všechny řádky v době přerušení. Pokud chcete klauzuli ORDER BY
zakázat, použijte disableOrderByHighWaterMarkColumn
nastavení v definici indexeru:
{
... other indexer definition properties
"parameters" : {
"configuration" : { "disableOrderByHighWaterMarkColumn" : true } }
}
Zásady detekce obnovitelného odstranění sloupců
Když se řádky odstraní ze zdrojové tabulky, pravděpodobně budete chtít odstranit i tyto řádky z indexu vyhledávání. Pokud používáte integrované zásady sledování změn SQL, postará se o to za vás. Zásady sledování změn horních znamék vám ale nepomůžou s odstraněnými řádky. Co dělat?
Pokud jsou řádky fyzicky odebrány z tabulky, Azure AI Search nemůže odvodit přítomnost záznamů, které už neexistují. Pomocí techniky obnovitelného odstranění ale můžete logicky odstranit řádky, aniž byste je z tabulky odebrali. Přidejte sloupec do tabulky nebo zobrazení a označte řádky jako odstraněné pomocí tohoto sloupce.
Při použití techniky obnovitelného odstranění můžete zásadu obnovitelného odstranění zadat následujícím způsobem při vytváření nebo aktualizaci zdroje dat:
{
…,
"dataDeletionDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName" : "[a column name]",
"softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
}
}
SoftDeleteMarkerValue musí být řetězec v reprezentaci JSON vašeho zdroje dat. Použijte řetězcovou reprezentaci skutečné hodnoty. Pokud máte například celočíselnou hodnotu, ve které jsou odstraněné řádky označené hodnotou 1, použijte "1"
. Pokud máte sloupec BIT, ve kterém jsou odstraněné řádky označené logickou hodnotou true, použijte řetězcový literál "True"
nebo "true"
případ nezáleží.
Pokud nastavujete zásadu obnovitelného odstranění z webu Azure Portal, nepřidávejte uvozovky kolem hodnoty značky obnovitelného odstranění. Obsah pole je již pochopen jako řetězec a automaticky se přeloží do řetězce JSON za vás. V předchozíchpříkladch 1
True
true
Často kladené dotazy
Otázka: Můžu indexovat sloupce Always Encrypted?
Ne, indexery Azure AI Search v současné době nepodporují sloupce Always Encrypted .
Otázka: Můžu použít indexer Azure SQL s databázemi SQL běžícími na virtuálních počítačích IaaS v Azure?
Ano. Musíte ale službě Search povolit připojení k databázi. Další informace najdete v tématu Konfigurace připojení z indexeru Azure AI Search k SQL Serveru na virtuálním počítači Azure.
Otázka: Můžu použít indexer Azure SQL s databázemi SQL spuštěnými místně?
Ne přímo. Nedoporučujeme ani nepodporujeme přímé připojení, stejně jako byste museli otevírat databáze pro internetový provoz. Zákazníci s tímto scénářem uspěli pomocí technologií mostu, jako je Azure Data Factory. Další informace najdete v tématu Zápis dat do indexu Azure AI Search pomocí služby Azure Data Factory.
Otázka: Můžu jako zdroj dat použít sekundární repliku v clusteru s podporou převzetí služeb při selhání?
To záleží na okolnostech. Pro úplné indexování tabulky nebo zobrazení můžete použít sekundární repliku.
Pro přírůstkové indexování azure AI Search podporuje dvě zásady detekce změn: integrované sledování změn SQL a high water mark.
U replik jen pro čtení nepodporuje SQL Database integrované sledování změn. Proto musíte použít zásady vysoké značky.
Naším standardním doporučením je použití datového typu rowversion pro sloupec horní meze. Použití rowversion ale spoléhá na MIN_ACTIVE_ROWVERSION
funkci, která není podporována na replikách jen pro čtení. Proto pokud používáte rowversion, musíte indexer nasměrovat na primární repliku.
Pokud se pokusíte použít rowversion v replice jen pro čtení, zobrazí se následující chyba:
Použití sloupce rowversion pro sledování změn není podporováno u sekundárních replik dostupnosti (jen pro čtení). Aktualizujte zdroj dat a zadejte připojení k primární replice dostupnosti. Aktuální vlastnost Aktualizovatelnost databáze je READ_ONLY.
Otázka: Můžu použít alternativní sloupec bez rowversion pro sledování změn horní značky?
Nedoporučuje se. Pouze rowversion umožňuje spolehlivou synchronizaci dat. V závislosti na logice vaší aplikace ale může být bezpečné, pokud:
Můžete zajistit, aby při spuštění indexeru nedošlo k žádným nevyřízeným transakcím v tabulce, která se indexuje (například všechny aktualizace tabulek probíhají jako dávka podle plánu, a plán indexeru služby Azure AI Search je nastavený tak, aby se nepřekrývaly s plánem aktualizace tabulky).
Pravidelně provedete úplné přeindexování a vyzvednete všechny zmeškané řádky.