Connettori di Azure SQL e Microsoft SQL ServerAzure SQL and Microsoft SQL server connectors

Con un connettore di Microsoft SQL Server o di Azure SQL, l'organizzazione può individuare e indicizzare i dati da un database di SQL Server locale o da un database ospitato nell'istanza SQL di Azure nel cloud.With a Microsoft SQL server or Azure SQL connector, your organization can discover and index data from an on-premises SQL Server database or a database hosted in your Azure SQL instance in the cloud. Il connettore indicizza il contenuto specificato in Microsoft Search.The connector indexes specified content into Microsoft Search. Per mantenere l'indice aggiornato con i dati di origine, supporta le ricerche per indicizzazione periodiche complete e incrementali.To keep the index up to date with source data, it supports periodic full and incremental crawls. Con questi connettori SQL, è anche possibile limitare l'accesso ai risultati della ricerca per alcuni utenti.With these SQL connectors, you can also restrict access to search results for certain users.

Questo articolo è per gli amministratori di Microsoft 365 o per tutti gli utenti che configurano, eseguono e monitorano un connettore SQL Server o Microsoft Azure.This article is for Microsoft 365 administrators or anyone who configures, runs, and monitors a Microsoft SQL server or Azure SQL connector. In questo articolo viene illustrato come configurare le funzionalità di connettore e connettore, le limitazioni e le tecniche di risoluzione dei problemi.It explains how to configure your connector and connector capabilities, limitations, and troubleshooting techniques.

Installare l'agente del connettore grafico (necessario solo per il connettore di Microsoft SQL Server locale)Install the Graph connector agent (required for on-premises Microsoft SQL server connector only)

Per accedere ai dati di terze parti locali, è necessario installare e configurare l'agente del connettore grafico.In order to access your on-premises third-party data, you must install and configure the Graph connector agent. Per ulteriori informazioni, vedere installare l'agente del connettore grafico .See Install the Graph connector agent to learn more.

Registrare un'app (solo per il connettore SQL di Azure)Register an app (for Azure SQL connector only)

Per il connettore SQL di Azure, è necessario registrare un'app in Azure Active Directory per consentire all'app di ricerca Microsoft di accedere ai dati per l'indicizzazione.For Azure SQL connector, you must register an app in Azure Active Directory to allow Microsoft Search app to access data for indexing. Per ulteriori informazioni sulla registrazione di un'app, fare riferimento alla documentazione di Microsoft Graph su come registrare un'app.To learn more about registering an app, refer Microsoft Graph documentation on how to register an app.

Dopo aver completato la registrazione delle app e aver preso nota del nome dell'app, dell'ID dell'applicazione (client) e dell'ID tenant, è necessario generare un nuovo segreto client.After completing the app registration and taking note of the app name, application (client) ID and tenant ID, you need to generate a new client secret. Il segreto client verrà visualizzato solo una volta.The client secret will only be displayed once. Tenere presente & archiviare il segreto client in modo sicuro.Remember to note & store the client secret securely. Utilizzare l'ID client e il segreto client durante la configurazione di una nuova connessione in Microsoft Search.Use the client ID and client secret while configuring a new connection in Microsoft Search.

Per aggiungere l'app registrata al database SQL di Azure, è necessario eseguire le operazioni seguenti:To add the registered app to your Azure SQL Database, you need to:

  • Accedere al database SQL di AzureLog in to your Azure SQL DB
  • Aprire una nuova finestra di queryOpen a new query window
  • Creare un nuovo utente eseguendo il comando ' Crea utente [nome app] da PROVIDER esterno 'Create a new user by running the command ‘CREATE USER [app name] FROM EXTERNAL PROVIDER’
  • Aggiungere un utente al ruolo eseguendo il comando ' exec sp_addrolemember ' db_datareader ', [nome app]' oppure ' ALTER ROLE db_datareader ADD MEMBER [nome app]'Add user to role by running command 'exec sp_addrolemember 'db_datareader', [app name]' Or 'ALTER ROLE db_datareader ADD MEMBER [app name]'

Nota

Per revocare l'accesso a qualsiasi applicazione registrata in Azure Active Directory, fare riferimento alla documentazione di Azure sulla rimozione di un'app registrata.To revoke access to any app registered in Azure Active Directory, refer the Azure documentation on removing a registered app.

Connettersi a un'origine datiConnect to a data source

Per connettere il connettore Microsoft SQL Server a un'origine dati, è necessario configurare il server di database che si desidera sottoporre a ricerca per indicizzazione e l'agente on-Prem.To connect your Microsoft SQL server connector to a data source, you must configure the database server you want crawled and the on-prem agent. È quindi possibile connettersi al database con il metodo di autenticazione necessario.You can then connect to the database with the required authentication method.

Nota

È necessario che il database esegua SQL Server versione 2008 o successiva per il connettore Microsoft SQL Server per potersi connettere.Your database must run SQL server version 2008 or later for the Microsoft SQL server connector to be able to connect.

Per il connettore SQL di Azure, è sufficiente specificare il nome o l'indirizzo IP del server a cui si desidera effettuare la connessione.For the Azure SQL connector, you only need to specify the server name or IP address you want to connect to. Il connettore SQL di Azure supporta solo l'autenticazione di Azure Active Directory Open ID Connect (OIDC) per la connessione al database.Azure SQL connector only supports Azure Active Directory Open ID connect (OIDC) authentication to connect to the database.

Per una maggiore sicurezza, è possibile configurare le regole del firewall IP per il database o SQL Server di Azure.For added security, you may configure IP firewall rules for your Azure SQL server or database. Per ulteriori informazioni sulla configurazione delle regole del firewall IP, fare riferimento alla documentazione relativa alle regole del firewall IP.To learn more about setting up IP firewall rules, refer documentation on IP firewall rules. Aggiungere i seguenti intervalli di indirizzi IP client nelle impostazioni del firewall.Add the following client IP ranges in the firewall settings.

Area geograficaRegion Intervallo IPIP Range
NAMNAM 52.250.92.252/30, 52.224.250.216/3052.250.92.252/30, 52.224.250.216/30
EUREUR 20.54.41.208/30, 51.105.159.88/3020.54.41.208/30, 51.105.159.88/30
APCAPC 52.139.188.212/30, 20.43.146.44/3052.139.188.212/30, 20.43.146.44/30

Per eseguire la ricerca nel contenuto del database, è necessario specificare le query SQL quando si configura il connettore.To search your database content, you must specify SQL queries when you configure the connector. Queste query SQL devono assegnare un nome a tutte le colonne di database che si desidera indicizzare, ad esempio le proprietà di origine, compresi i join SQL che è necessario eseguire per ottenere tutte le colonne.These SQL queries need to name all the database columns that you want to index (i.e. source properties), including any SQL joins that need to be performed to get all the columns. Per limitare l'accesso ai risultati della ricerca, è necessario specificare gli elenchi di controllo di accesso (ACL, Access Control List) all'interno delle query SQL quando si configura il connettore.To restrict access to search results, you must specify Access Control Lists (ACLs) within SQL queries when you configure the connector.

Ricerca per indicizzazione completa (obbligatorio)Full crawl (Required)

In questo passaggio viene configurata la query SQL che esegue una ricerca per indicizzazione completa del database.In this step, you configure the SQL query that runs a full crawl of the database. La ricerca per indicizzazione completa consente di selezionare tutte le colonne o le proprietà che si desidera rendere Queryable, reperibili o recuperabili.The full crawl selects all the columns or properties you want to be made queryable, searchable, or retrievable. È inoltre possibile specificare le colonne ACL per limitare l'accesso ai risultati della ricerca a utenti o gruppi specifici.You can also specify ACL columns to restrict access of search results to specific users or groups.

Suggerimento

Per ottenere tutte le colonne necessarie, è possibile partecipare a più tabelle.To get all the columns that you need, you can join multiple tables.

Script che mostra OrderTable e AclTable con proprietà di esempio

Selezionare le colonne di dati (obbligatorio) e le colonne ACL (facoltativo)Select data columns (Required) and ACL columns (Optional)

In questo esempio viene illustrata la selezione di cinque colonne di dati che contengono i dati per la ricerca: OrderId, OrderTitle, OrderDesc, CreatedDateTime ed andeleted.The example demonstrates selection of five data columns that hold the data for the search: OrderId, OrderTitle, OrderDesc, CreatedDateTime, and IsDeleted. Per impostare le autorizzazioni di visualizzazione per ogni riga di dati, è facoltativamente possibile selezionare le colonne ACL seguenti: AllowedUsers, AllowedGroups, DeniedUsers e DeniedGroups.To set view permissions for each row of data, you can optionally select these ACL columns: AllowedUsers, AllowedGroups, DeniedUsers, and DeniedGroups. Tutte queste colonne di dati possono essere rese Queryable, reperibili o recuperabili.All these data columns can be made queryable, searchable, or retrievable.

Selezionare colonne di dati come illustrato in questa query di esempio: SELECT OrderId, OrderTitle, OrderDesc, AllowedUsers, AllowedGroups, DeniedUsers, DeniedGroups, CreatedDateTime, IsDeletedSelect data columns as shown in this example query: SELECT OrderId, OrderTitle, OrderDesc, AllowedUsers, AllowedGroups, DeniedUsers, DeniedGroups, CreatedDateTime, IsDeleted

Per gestire l'accesso ai risultati della ricerca, è possibile specificare una o più colonne ACL nella query.To manage access to the search results, you can specify one or more ACL columns in the query. Il connettore SQL consente di controllare l'accesso a ogni livello di record.The SQL connector allows you to control access at per record level. È possibile scegliere di avere lo stesso controllo di accesso per tutti i record di una tabella.You can choose to have the same access control for all records in a table. Se le informazioni ACL sono archiviate in una tabella separata, potrebbe essere necessario eseguire una join con tali tabelle nella query.If the ACL information is stored in a separate table, you might have to do a join with those tables in your query.

Di seguito viene descritto l'utilizzo di tutte le colonne ACL nella query precedente.The use of each of the ACL columns in the above query is described below. Nell'elenco seguente vengono illustrati i 4 meccanismi di controllo di accesso.The following list explains the 4 access control mechanisms.

  • AllowedUsers: specifica l'elenco di ID utente che saranno in grado di accedere ai risultati della ricerca.AllowedUsers: This specifies the list of user IDs who will be able to access the search results. Nell'esempio seguente, l'elenco di utenti: john@contoso.com, keith@contoso.com e lisa@contoso.com avrebbe accesso solo a un record con OrderId = 12.In the following example, list of users: john@contoso.com, keith@contoso.com, and lisa@contoso.com would only have access to a record with OrderId = 12.
  • AllowedGroups: specifica il gruppo di utenti che saranno in grado di accedere ai risultati della ricerca.AllowedGroups: This specifies the group of users who will be able to access the search results. Nell'esempio seguente, il gruppo sales-team@contoso.com avrebbe accesso solo al record con OrderId = 12.In the following example, group sales-team@contoso.com would only have access to record with OrderId = 12.
  • DeniedUsers: specifica l'elenco di utenti che non hanno accesso ai risultati della ricerca.DeniedUsers: This specifies the list of users who do not have access to the search results. Nell'esempio seguente, gli utenti john@contoso.com e keith@contoso.com non dispongono dell'accesso a record con OrderId = 13, mentre tutti gli altri hanno accesso a questo record.In the following example, users john@contoso.com and keith@contoso.com do not have access to record with OrderId = 13, whereas everyone else has access to this record.
  • DeniedGroups: specifica il gruppo di utenti che non hanno accesso ai risultati della ricerca.DeniedGroups: This specifies the group of users who do not have access to the search results. Nell'esempio seguente, i gruppi engg-team@contoso.com e pm-team@contoso.com non dispongono dell'accesso a record con OrderId = 15, mentre tutti gli altri hanno accesso a questo record.In the following example, groups engg-team@contoso.com and pm-team@contoso.com do not have access to record with OrderId = 15, whereas everyone else has access to this record.

Dati di esempio che mostrano OrderTable e AclTable con le proprietà di esempio

Tipi di dati supportatiSupported data types

Nella tabella seguente sono riepilogati i tipi di dati SQL supportati nei connettori SQL di MS SQL e Azure.The below table summarizes the SQL data types that are supported in the MS SQL and Azure SQL connectors. La tabella riepiloga anche il tipo di dati di indicizzazione per il tipo di dati SQL supportato.The table also summarizes the indexing data type for the supported SQL data type. Per ulteriori informazioni sui tipi di dati supportati dai connettori di Microsoft Graph per l'indicizzazione, fare riferimento alla documentazione sui tipi di risorse della proprietà.To learn more about Microsoft Graph connectors supported data types for indexing, refer documentation on property resource types.

CategoriaCategory Tipo di dati di origineSource data type Tipo di dati di indicizzazioneIndexing data type
Data e oraDate and time datadate
datetimedatetime
datetime2datetime2
smalldatetimesmalldatetime
datetimedatetime
Valore numerico esattoExact numeric bigintbigint
intint
smallintsmallint
tinyinttinyint
Int64int64
Valore numerico esattoExact numeric po'bit booleanboolean
Numerico approssimativoApproximate numeric galleggiantefloat
realereal
doppiodouble
Stringa di caratteriCharacter string charchar
varcharvarchar
testotext
stringastring
Stringhe di caratteri UnicodeUnicode character strings ncharnchar
nvarcharnvarchar
ntextntext
stringastring
Altri tipi di datiOther data types uniqueidentifieruniqueidentifier stringastring

Per qualsiasi altro tipo di dati attualmente non supportato direttamente, è necessario eseguire il cast esplicito di una colonna a un tipo di dati supportato.For any other data type currently not directly supported, the column needs to be explicitly cast to a supported data type.

Filigrana (obbligatoria)Watermark (Required)

Per evitare sovraccarichi del database, il connettore esegue il batch e riprende le query di ricerca per indicizzazione complete con una colonna di filigrana full-crawl.To prevent overloading the database, the connector batches and resumes full-crawl queries with a full-crawl watermark column. Se si utilizza il valore della colonna filigrana, ogni batch successivo viene recuperato e l'esecuzione di query viene ripresa dall'ultimo checkpoint.By using the value of the watermark column, each subsequent batch is fetched, and querying is resumed from the last checkpoint. In sostanza si tratta di un meccanismo per controllare l'aggiornamento dei dati per le ricerche per indicizzazione complete.Essentially this is a mechanism to control data refresh for full crawls.

Creare frammenti di query per le filigrane come illustrato negli esempi seguenti:Create query snippets for watermarks as shown in these examples:

  • WHERE (CreatedDateTime > @watermark).WHERE (CreatedDateTime > @watermark). Citare il nome della colonna della filigrana con la parola chiave riservata @watermark .Cite the watermark column name with the reserved keyword @watermark. Se l'ordinamento della colonna della filigrana è crescente, utilizzare > ; in caso contrario, utilizzare < .If the sort order of the watermark column is ascending, use >; otherwise, use <.
  • ORDER BY CreatedDateTime ASC.ORDER BY CreatedDateTime ASC. Ordinare la colonna della filigrana in ordine crescente o decrescente.Sort on the watermark column in ascending or descending order.

Nella configurazione illustrata nella figura seguente, CreatedDateTime è la colonna della filigrana selezionata.In the configuration shown in the following image, CreatedDateTime is the selected watermark column. Per recuperare il primo batch di righe, specificare il tipo di dati della colonna filigrana.To fetch the first batch of rows, specify the data type of the watermark column. In questo caso, il tipo di dati è DateTime .In this case, the data type is DateTime.

Configurazione colonna filigrana

La prima query recupera il primo numero N di righe utilizzando: "CreatedDateTime > January 1, 1753 00:00:00" (valore minimo del tipo di dati DateTime).The first query fetches the first N number of rows by using: "CreatedDateTime > January 1, 1753 00:00:00" (min value of DateTime data type). Dopo il recupero del primo batch, il valore massimo CreatedDateTime restituito nel batch viene salvato come checkpoint se le righe sono ordinate in ordine crescente.After the first batch is fetched, the highest value of CreatedDateTime returned in the batch is saved as the checkpoint if the rows are sorted in ascending order. Un esempio è il 1 ° marzo 2019 03:00:00.An example is March 1, 2019 03:00:00. Viene quindi recuperato il batch successivo di N righe utilizzando "CreatedDateTime > 1 marzo 2019 03:00:00" nella query.Then the next batch of N rows is fetched by using "CreatedDateTime > March 1, 2019 03:00:00" in the query.

Ignorare le righe eliminate temporaneamente (facoltativo)Skipping soft-deleted rows (Optional)

Per escludere la possibilità di indicizzare le righe eliminate temporaneamente nel database, specificare il nome e il valore della colonna di eliminazione temporanea che indica che la riga è stata eliminata.To exclude soft-deleted rows in your database from being indexed, specify the soft-delete column name and value that indicates the row is deleted.

Soft delete Settings: "soft delete column" e "value of soft delete column che indica una riga eliminata"

Ricerche per indicizzazione complete: gestione delle autorizzazioni di ricercaFull crawl: Manage search permissions

Fare clic su Gestisci autorizzazioni per selezionare le varie colonne di controllo di accesso (ACL) che specificano il meccanismo di controllo di accesso.Click Manage permissions to select the various access control (ACL) columns which specify the access control mechanism. Selezionare il nome della colonna specificato nella query SQL di ricerca per indicizzazione completa.Select the column name you specified in the full crawl SQL query.

Ognuna delle colonne ACL dovrebbe essere una colonna multivalore.Each of the ACL columns is expected to be a multi-valued column. Questi valori ID multipli possono essere separati da separatori, ad esempio punto e virgola (;), virgola (,) e così via.These multiple ID values can be separated by separators such as semicolon (;), comma (,), and so on. È necessario specificare questo separatore nel campo separatore di valori .You need to specify this separator in the value separator field.

I tipi di ID seguenti sono supportati per l'utilizzo come ACL:The following ID types are supported for using as ACLs:

  • Nome dell'entità utente (UPN): un nome dell'entità utente (UPN) è il nome di un utente di sistema in un formato di indirizzo di posta elettronica.User Principal Name (UPN): A User Principal Name (UPN) is the name of a system user in an email address format. Un UPN (ad esempio: john.doe@domain.com) è costituito da nome di accesso, separatore (il simbolo @) e nome di dominio (suffisso UPN).A UPN (for example: john.doe@domain.com) consists of the username (logon name), separator (the @ symbol), and domain name (UPN suffix).
  • ID di Azure Active Directory (AAD): in Azure ad, ogni utente o gruppo ha un ID oggetto che ha un aspetto simile a "e0d3ad3d-0000-1111-2222-3c5f5c52ab9b"Azure Active Directory (AAD) ID: In Azure AD, every user or group has an object ID which looks something like ‘e0d3ad3d-0000-1111-2222-3c5f5c52ab9b’
  • ID di sicurezza di Active Directory (ad): in una configurazione degli annunci locali, tutti gli utenti e i gruppi dispongono di un identificatore di sicurezza univoco e non modificabile che ha un aspetto simile a-1-5-21-3878594291-2115959936-132693609-65242.Active Directory (AD) Security ID: In an on-premises AD setup, every user and group have an immutable, unique security identifier which looks something like ‘S-1-5-21-3878594291-2115959936-132693609-65242.’

Impostazioni delle autorizzazioni di ricerca per configurare gli elenchi di controllo di accesso

Ricerca per indicizzazione incrementale (facoltativa)Incremental crawl (Optional)

In questo passaggio facoltativo, fornire una query SQL per eseguire una ricerca per indicizzazione incrementale del database.In this optional step, provide a SQL query to run an incremental crawl of the database. Con questa query, il connettore SQL determina le modifiche apportate ai dati dall'ultima ricerca per indicizzazione incrementale.With this query, the SQL connector determines any changes to the data since the last incremental crawl. Come nella ricerca per indicizzazione completa, selezionare tutte le colonne che si desidera rendere Queryable, reperibili o recuperabili.As in the full crawl, select all columns that you want to be made queryable, searchable, or retrievable. Specificare lo stesso insieme di colonne ACL specificato nella query di ricerca per indicizzazione completa.Specify the same set of ACL columns that you specified in the full crawl query.

I componenti nell'immagine seguente sono simili ai componenti di ricerca per indicizzazione completi con una sola eccezione.The components in the following image resemble the full crawl components with one exception. In questo caso, "ModifiedDateTime" è la colonna della filigrana selezionata.In this case, "ModifiedDateTime" is the selected watermark column. Esaminare i passaggi per la ricerca per indicizzazione completa per informazioni su come scrivere la query di ricerca per indicizzazione incrementale e vedere come esempio l'immagine seguente.Review the full crawl steps to learn how to write your incremental crawl query and see the following image as an example.

Script di ricerca per indicizzazione incrementale che mostra OrderTable, AclTable e proprietà di esempio che è possibile utilizzare.

Gestire le autorizzazioni di ricercaManage search permissions

È possibile scegliere di utilizzare gli ACL specificati nella schermata di ricerca per indicizzazione completa oppure è possibile sovrascriverli per rendere il contenuto visibile a tutti.You can choose to use the ACLs specified in the full crawl screen or you can override them to make your content visible to everyone.

Passaggi successivi: personalizzare la pagina dei risultati di ricercaNext steps: Customize the search results page

Creare i propri tipi di verticali e di risultati, in modo che gli utenti finali possano visualizzare i risultati della ricerca dalle nuove connessioni.Create your own verticals and result types, so end users can view search results from new connections. Senza questo passaggio, i dati della connessione non verranno visualizzati nella pagina dei risultati della ricerca.Without this step, data from your connection won’t show up on the search results page.

Per ulteriori informazioni su come creare i verticali e MRTs, vedere Personalizzazione della pagina dei risultati di ricerca.To learn more about how to create your verticals and MRTs, see Search results page customization.

LimitazioniLimitations

I connettori SQL presentano queste limitazioni nella versione di anteprima:The SQL connectors have these limitations in the preview release:

  • Connettore Microsoft SQL Server: il database locale deve eseguire SQL Server versione 2008 o successiva.Microsoft SQL server connector: The on-premises database must run SQL server version 2008 or later.
  • Gli elenchi ACL sono supportati solo utilizzando un nome dell'entità utente (UPN), Azure Active Directory (Azure AD) o la sicurezza di Active Directory.ACLs are only supported by using a User Principal Name (UPN), Azure Active Directory (Azure AD), or Active Directory Security.
  • L'indicizzazione del contenuto RTF all'interno delle colonne di database non è supportata.Indexing rich content inside database columns is not supported. Esempi di contenuto di questo tipo sono HTML, JSON, XML, BLOB e analisi dei documenti che esistono come collegamenti all'interno delle colonne di database.Examples of such content are HTML, JSON, XML, blobs, and document parsings that exist as links inside the database columns.