Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2016 (13.x) e versioni successive
Questo articolo illustra diversi errori comuni di script durante l'esecuzione di script R in SQL Server Machine Learning Services. Non si tratta tuttavia di un elenco completo. Sono disponibili numerosi pacchetti e gli errori possono variare da una versione all'altra dello stesso pacchetto.
Uno script valido genera un errore in T-SQL o nelle stored procedure
Prima di eseguire il wrapping del codice R in una stored procedure, è consigliabile eseguire il codice R in un IDE esterno o in uno degli strumenti R, ad esempio RTerm o RGui. Usando questi metodi, è possibile testare ed eseguire il debug del codice usando i messaggi di errore dettagliati restituiti da R.
Tuttavia, a volte il codice che funziona perfettamente in un'utilità o in un IDE esterno potrebbe non essere eseguito correttamente in una stored procedure o in un contesto di calcolo di SQL Server. In tal caso, è necessario esaminare una vasta gamma di problemi prima di presupporre che il pacchetto non funzioni in SQL Server.
Controllare se Launchpad è in esecuzione.
Esaminare i messaggi per verificare se i dati di input o di output contengono colonne con tipi di dati incompatibili o non supportati. Ad esempio, le query in un database SQL spesso restituiscono GUID o RowGUID, entrambi non supportati. Per altre informazioni, vedere Librerie R e tipi di dati.
Esaminare le pagine della Guida delle singole funzioni R per determinare se tutti i parametri sono supportati per il contesto di calcolo di SQL Server. Per la Guida di ScaleR, usare i comandi della Guida di R inline oppure vedere le informazioni di riferimento sul pacchetto.
Se il runtime di R è funzionante ma lo script restituisce errori, si consiglia di provare a eseguire il debug dello script in un ambiente di sviluppo R dedicato, come R Tools per Visual Studio.
Si consiglia inoltre di rivedere e riscrivere leggermente lo script per correggere eventuali problemi con i tipi di dati che possono verificarsi quando si spostano i dati tra R e il motore di database. Per altre informazioni, vedere Librerie R e tipi di dati.
Inoltre, è possibile usare il pacchetto sqlrutils per aggregare lo script R in un formato più facilmente utilizzabile come stored procedure. Per altre informazioni, vedi:
Lo script restituisce risultati incoerenti
Gli script R possono restituire valori diversi in un contesto di SQL Server, per vari motivi:
La conversione implicita dei tipi viene eseguita automaticamente su alcuni tipi di dati, quando i dati vengono passati tra SQL Server e R. Per altre informazioni, vedere Librerie R e tipi di dati.
Determinare se il numero di bit è un fattore. Ad esempio, ci sono spesso delle differenze nei risultati delle operazioni matematiche per le librerie a virgola mobile a 32 bit e a 64 bit.
Determinare se sono stati prodotti valori diversi da numeri in un'operazione. In tal caso, i risultati potrebbero non essere validi.
È possibile che differenze minime risultino amplificate quando si accetta un reciproco di un numero prossimo a zero.
Gli errori di arrotondamento accumulati possono causare valori inferiori a zero anziché pari a zero.
Autenticazione implicita per l'esecuzione remota tramite ODBC
Se ci si connette al computer SQL Server per eseguire comandi R tramite le funzioni RevoScaleR, è possibile che venga restituito un errore durante l'uso di chiamate ODBC che scrivono dati sul server. Questo errore si verifica solo quando si usa l'autenticazione di Windows.
Il motivo è che gli account di lavoro creati per R Services non dispongono dell'autorizzazione per la connessione al server. Non è pertanto possibile eseguire chiamate ODBC per conto dell'utente. Il problema non si verifica con gli account di accesso SQL perché, con gli account di accesso SQL, le credenziali vengono passate in modo esplicito dal client R all'istanza di SQL Server e quindi a ODBC. Tuttavia, l'uso di account di accesso SQL è anche meno sicuro rispetto all'uso dell'autenticazione di Windows.
Per consentire il passaggio sicuro delle credenziali di Windows da uno script avviato in modalità remota, SQL Server deve emulare tali credenziali. Questo processo viene definito di autenticazione implicita. Per eseguire questa operazione, gli account di lavoro che eseguono script R o Python nel computer SQL Server devono disporre delle corrette autorizzazioni.
Aprire SQL Server Management Studio come amministratore dell'istanza in cui si vuole eseguire il codice R.
Eseguire lo script seguente. Assicurarsi di modificare il nome del gruppo utenti, se è stato cambiato quello predefinito, oltre che i nomi del computer e dell'istanza.
USE [master] GO CREATE LOGIN [computername\\SQLRUserGroup] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[language] GO
Evitare di cancellare i dati dell'area di lavoro durante l'esecuzione di R in un contesto di calcolo SQL
Anche se è un'operazione comune nella console R, la cancellazione dei dati dell'area di lavoro può avere conseguenze impreviste in un contesto di calcolo SQL.
revoScriptConnection
è un oggetto dell'area di lavoro R che contiene informazioni su una sessione R chiamata da SQL Server. Se tuttavia il codice R include un comando per cancellare i dati dell'area di lavoro, ad esempio rm(list=ls())
, anche tutte le informazioni relative alla sessione e altri oggetti presenti nell'area di lavoro R vengono cancellati.
Come soluzione alternativa, evitare di cancellare in modo indiscriminato variabili e altri oggetti durante l'esecuzione di R in SQL Server. È possibile eliminare variabili specifiche usando la funzione remove:
remove('name1', 'name2', ...)
Se devono essere eliminate più variabili, si consiglia di salvare i nomi delle variabili temporanee in un elenco e quindi eseguire periodicamente operazioni di Garbage Collection sull'elenco.
Passaggi successivi
Raccolta di dati per la risoluzione dei problemi di SQL Server Machine Learning Services