Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) SQL Server 2017 (14.x)
SQL Server 2019 (15.x)
op Linux
R-integratie is beschikbaar in SQL Server 2016 of hoger wanneer u de R-taaloptie opneemt in een installatie van SQL Server 2016 R Services of SQL Server Machine Learning Services (In-Database).
Opmerking
Dit artikel is momenteel alleen van toepassing op SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x) en SQL Server 2019 (15.x) voor Linux.
Als u R-oplossingen voor SQL Server wilt ontwikkelen en implementeren, installeert u Microsoft R Client op uw ontwikkelwerkstation om RevoScaleR en andere R-bibliotheken op te halen. De RevoScaleR-bibliotheek, die ook vereist is op het externe SQL Server-exemplaar, coördineert rekenaanvragen tussen beide systemen.
In dit artikel leert u hoe u een R-clientontwikkelingswerkstation configureert, zodat u kunt communiceren met een externe SQL Server die is ingeschakeld voor machine learning en R-integratie. Nadat u de stappen in dit artikel hebt voltooid, hebt u dezelfde R-bibliotheken als die in SQL Server. U weet ook hoe u berekeningen van een lokale R-sessie naar een externe R-sessie op SQL Server pusht.
Als u de installatie wilt valideren, kunt u het ingebouwde RGUI-hulpprogramma gebruiken, zoals beschreven in dit artikel, of de bibliotheken koppelen aan RStudio of een andere IDE die u normaal gesproken gebruikt.
Veelgebruikte hulpprogramma's
Of u nu een R-ontwikkelaar bent die nieuw is in SQL of een SQL-ontwikkelaar die nieuw is in R en in databaseanalyse, u hebt zowel een R-ontwikkelhulpprogramma als een T-SQL-queryeditor nodig, zoals SQL Server Management Studio (SSMS) om alle mogelijkheden van in-databaseanalyses uit te oefenen.
Voor eenvoudige R-ontwikkelingsscenario's kunt u het uitvoerbare RGUI-bestand gebruiken, gebundeld in de basis-R-distributie in MRO en SQL Server. In dit artikel wordt uitgelegd hoe u RGUI gebruikt voor zowel lokale als externe R-sessies. Voor een betere productiviteit moet u een volledige IDE gebruiken, zoals RStudio of Visual Studio.
SSMS is een afzonderlijke download, handig voor het maken en uitvoeren van opgeslagen procedures op SQL Server, met inbegrip van die met R-code. Bijna elke R-code die u in een ontwikkelomgeving schrijft, kan worden ingesloten in een opgeslagen procedure. U kunt andere zelfstudies doorlopen voor meer informatie over SSMS en ingesloten R.
1 - R-pakketten installeren
R-pakketten van Microsoft zijn beschikbaar in meerdere producten en services. Op een lokaal werkstation raden we u aan Microsoft R Client te installeren. R Client biedt RevoScaleR, MicrosoftML, SQLRUtils en andere R-pakketten.
Accepteer of wijzig in de installatiewizard het standaardinstallatiepad, accepteer of wijzig de lijst met onderdelen en accepteer de licentievoorwaarden van de Microsoft R-client.
Wanneer de installatie is voltooid, maakt een welkomstscherm kennis met het product en de documentatie.
Maak een MKL_CBWR systeemomgevingsvariabele om consistente uitvoer te garanderen op MKL-berekeningen (Intel Math Kernel Library).
- In het Configuratiescherm selecteert u Systeem en Beveiliging>Systeem>Geavanceerde systeeminstellingen>Omgevingsvariabelen.
- Maak een nieuwe systeemvariabele met de naam MKL_CBWR, met een waarde ingesteld op AUTO.
2 - Uitvoerbare bestanden zoeken
Zoek en vermeld de inhoud van de installatiemap om te bevestigen dat R.exe, RGUI en andere pakketten zijn geïnstalleerd.
Open de
%ProgramFiles%\Microsoft\R Client\R_SERVER\binmap in Verkenner om de locatie vanR.exete bevestigen.Open de x64-submap om RGUI te bevestigen. U gebruikt dit hulpprogramma in de volgende stap.
Open
%ProgramFiles%\Microsoft\R Client\R_SERVER\libraryom de lijst met pakketten te bekijken die zijn geïnstalleerd met R Client, waaronder RevoScaleR, MicrosoftML en andere.
3 - Start RGUI
Wanneer u R installeert met SQL Server, krijgt u dezelfde R-hulpprogramma's die standaard zijn voor elke basisinstallatie van R, zoals RGui, Rterm, enzovoort. Deze hulpprogramma's zijn lichtgewicht, handig voor het controleren van pakket- en bibliotheekgegevens, het uitvoeren van ad-hocopdrachten of scripts, of het doorlopen van zelfstudies. U kunt deze hulpprogramma's gebruiken om R-versiegegevens op te halen en de connectiviteit te bevestigen.
Open
%ProgramFiles%\Microsoft\R Client\R_SERVER\bin\x64en dubbelklik op RGui om een R-sessie te starten met een R-opdrachtprompt.Wanneer u een R-sessie start vanuit een Microsoft-programmamap, worden verschillende pakketten, waaronder RevoScaleR, automatisch geladen.
Voer
print(Revo.version)bij de opdrachtprompt in om revoScaleR-pakketversiegegevens te retourneren. U moet versie 9.2.1 of 9.3.0 hebben voor RevoScaleR.Voer search() in bij de R-prompt voor een lijst met geïnstalleerde pakketten.
4 - SQL-machtigingen ophalen
In R Client wordt de R-verwerking beperkt tot twee threads en in-memory-gegevens. Voor schaalbare verwerking met behulp van meerdere kernen en grote gegevenssets kunt u de uitvoering (ook wel rekencontext genoemd) verplaatsen naar de gegevenssets en rekenkracht van een extern SQL Server-exemplaar. Dit is de aanbevolen methode voor clientintegratie met een SQL Server-exemplaar voor productie en u hebt machtigingen en verbindingsgegevens nodig om deze te laten werken.
Als u verbinding wilt maken met een exemplaar van SQL Server om scripts uit te voeren en gegevens te uploaden, moet u een geldige aanmelding hebben op de databaseserver. U kunt een SQL-aanmelding of geïntegreerde Windows-verificatie gebruiken. Over het algemeen wordt u aangeraden geïntegreerde Windows-verificatie te gebruiken, maar het gebruik van de SQL-aanmelding is voor sommige scenario's eenvoudiger, met name wanneer uw script verbindingsreeksen naar externe gegevens bevat.
Ten minste moet het account dat wordt gebruikt om code uit te voeren, gemachtigd zijn om te lezen uit de databases waarmee u werkt, plus de speciale machtiging EXECUTE ANY EXTERNAL SCRIPT. De meeste ontwikkelaars hebben ook machtigingen nodig om opgeslagen procedures te maken en gegevens naar tabellen te schrijven die trainingsgegevens of scoregegevens bevatten.
Vraag de databasebeheerder om de volgende machtigingen voor uw account te configureren in de database waarin u R gebruikt:
- VOER EEN EXTERN SCRIPT UIT om R-script uit te voeren op de server.
- db_datareader bevoegdheden voor het uitvoeren van de query's die worden gebruikt voor het trainen van het model.
- db_datawriter om trainingsdata of scoringgegevens te schrijven.
- db_owner objecten maken, zoals opgeslagen procedures, tabellen, functies. U hebt ook db_owner nodig om voorbeelddatabases te maken en te testen.
Zorg ervoor dat de pakketten die vereist zijn voor uw code geïnstalleerd zijn bij de instantie van SQL Server, indien deze niet standaard geïnstalleerd zijn, door met de databasebeheerder afspraken te maken. SQL Server is een beveiligde omgeving en er zijn beperkingen voor waar pakketten kunnen worden geïnstalleerd. Zie Nieuwe R-pakketten installeren op SQL Server voor meer informatie.
5 - Verbindingen testen
Als verificatiestap gebruikt u RGUI en RevoScaleR om de verbinding met de externe server te bevestigen. SQL Server moet zijn ingeschakeld voor externe verbindingen en u moet machtigingen hebben, waaronder een gebruikersaanmelding en een database waarmee verbinding moet worden gemaakt.
In de volgende stappen wordt ervan uitgegaan dat de demodatabase, NYCTaxi_Sample, en Windows-authenticatie worden gebruikt.
Open RGUI op het clientwerkstation. Ga bijvoorbeeld naar
~\Program Files\Microsoft SQL Server\140\R_SERVER\bin\x64en dubbelklik op RGui.exe om het te starten.RevoScaleR wordt automatisch geladen. Controleer of RevoScaleR operationeel is door deze opdracht uit te voeren:
print(Revo.version)Voer een demoscript in dat wordt uitgevoerd op de externe server. U moet het volgende voorbeeldscript wijzigen om een geldige naam op te nemen voor een extern SQL Server-exemplaar. Deze sessie begint als een lokale sessie, maar de rxSummary-functie wordt uitgevoerd op het externe SQL Server-exemplaar.
# Define a connection. Replace server with a valid server name. connStr <- "Driver=SQL Server;Server=<your-server-name>;Database=NYCTaxi_Sample;Trusted_Connection=true" # Specify the input data in a SQL query. sampleQuery <-"SELECT DISTINCT TOP(100) tip_amount FROM [dbo].nyctaxi_sample ORDER BY tip_amount DESC;" # Define a remote compute context based on the remote server. cc <-RxInSqlServer(connectionString=connStr) # Execute the function using the remote compute context. rxSummary(formula = ~ ., data = RxSqlServerData(sqlQuery=sampleQuery, connectionString=connStr), computeContext=cc)Resultaten:
Dit script maakt verbinding met een database op de externe server, biedt een query, maakt een instructie voor rekencontext
ccvoor het uitvoeren van externe code en levert vervolgens de RevoScaleR-functie rxSummary om een statistische samenvatting van de queryresultaten te retourneren.Call: rxSummary(formula = ~., data = RxSqlServerData(sqlQuery = sampleQuery, connectionString = connStr), computeContext = cc) Summary Statistics Results for: ~. Data: RxSqlServerData(sqlQuery = sampleQuery, connectionString = connStr) (RxSqlServerData Data Source) Number of valid observations: 100 Name Mean StdDev Min Max ValidObs MissingObs tip_amount 63.245 31.61087 36 180 100 0De verwerkingcontext ophalen en instellen. Zodra u een rekencontext hebt ingesteld, blijft deze van kracht tijdens de sessie. Als u niet zeker weet of de berekening lokaal of extern is, voert u de volgende opdracht uit om erachter te komen. Resultaten die een verbindingsreeks opgeven, geven een externe rekencontext aan.
# Return the current compute context. rxGetComputeContext() # Revert to a local compute context. rxSetComputeContext("local") rxGetComputeContext() # Switch back to remote. connStr <- "Driver=SQL Server;Server=<your-server-name>;Database=NYCTaxi_Sample;Trusted_Connection=true" cc <-RxInSqlServer(connectionString=connStr) rxSetComputeContext(cc) rxGetComputeContext()Retourneert informatie over variabelen in de gegevensbron, inclusief naam en type.
rxGetVarInfo(data = inDataSource)De resultaten omvatten 23 variabelen.
Genereer een spreidingsplot om te onderzoeken of er afhankelijkheden zijn tussen twee variabelen.
# Set the connection string. Substitute a valid server name for the placeholder. connStr <- "Driver=SQL Server;Server=<your database name>;Database=NYCTaxi_Sample;Trusted_Connection=true" # Specify a query on the nyctaxi_sample table. # For variables on each axis, remove nulls. Use a WHERE clause and <> to do this. sampleQuery <-"SELECT DISTINCT TOP 100 * from [dbo].[nyctaxi_sample] WHERE fare_amount <> '' AND tip_amount <> ''" cc <-RxInSqlServer(connectionString=connStr) # Generate a scatter plot. rxLinePlot(fare_amount ~ tip_amount, data = RxSqlServerData(sqlQuery=sampleQuery, connectionString=connStr, computeContext=cc), type="p")In de volgende screenshot ziet u de invoer en de uitvoer van het spreidingsdiagram.
6 - Hulpprogramma's koppelen aan R.exe
Voor duurzame en serieuze ontwikkelingsprojecten moet u een integrated development environment (IDE) installeren. SQL Server-hulpprogramma's en de ingebouwde R-hulpprogramma's zijn niet uitgerust voor zware R-ontwikkeling. Zodra u werkende code hebt, kunt u deze implementeren als een opgeslagen procedure voor uitvoering op SQL Server.
Wijs uw IDE naar de lokale R-bibliotheken: basis R, RevoScaleR, enzovoort. Het uitvoeren van workloads op een externe SQL Server vindt plaats tijdens het uitvoeren van scripts, wanneer uw script een externe rekencontext op SQL Server aanroept, toegang tot gegevens en bewerkingen op die server.
RStudio
Wanneer u RStudio gebruikt, kunt u de omgeving configureren voor het gebruik van de R-bibliotheken en uitvoerbare bestanden die overeenkomen met die op een externe SQL Server.
Controleer of R-pakketversies zijn geïnstalleerd op SQL Server. Zie Informatie over R-pakket ophalen voor meer informatie.
Installeer Microsoft R Client om RevoScaleR en andere R-pakketten toe te voegen, inclusief de basis-R-distributie die wordt gebruikt door uw SQL Server-exemplaar. Kies een versie op hetzelfde niveau of lager (pakketten zijn compatibel met eerdere versies) die dezelfde pakketversies bieden als op de server. Zie Alle geïnstalleerde R-pakketten weergeven om de pakketversies weer te geven die op de server zijn geïnstalleerd.
Werk in RStudio uw R-pad bij zodat deze verwijst naar de R-omgeving die RevoScaleR, Microsoft R Open en andere Microsoft-pakketten biedt.
%ProgramFiles%\Microsoft\R Client\R_SERVER\bin\x64Zoek naar .Sluit RStudio en open het vervolgens weer.
Wanneer u RStudio opnieuw opent, is het uitvoerbare R-bestand van R Client de standaard-R-engine.
R Tools for Visual Studio (RTVS)
Als u nog geen voorkeurs-IDE voor R hebt, raden we R Tools voor Visual Studio aan.
- R Tools voor Visual Studio (RTVS) downloaden
- Installatie-instructies : RTVS is beschikbaar in verschillende versies van Visual Studio.
- Aan de slag met R Tools voor Visual Studio
Verbinding maken met SQL Server vanuit RTVS
In dit voorbeeld wordt Visual Studio 2017 Community Edition gebruikt, waarbij de data science-workload is geïnstalleerd.
Selecteer Nieuw in het menu Bestand en selecteer Vervolgens Project.
Het linkerdeelvenster bevat een lijst met vooraf geïnstalleerde sjablonen. Selecteer R en selecteer R Project. Typ en selecteer
dbtestin het vak Naam.Visual Studio maakt een nieuwe projectmap en een standaardscriptbestand.
Script.RTyp
.libPaths()op de eerste regel van het scriptbestand en drukCTRL + ENTERop .Het huidige R-bibliotheekpad moet worden weergegeven in het interactieve R-venster .
Selecteer het menu R-hulpprogramma's en selecteer Windows om een lijst weer te geven met andere R-specifieke vensters die u in uw werkruimte kunt weergeven.
- Bekijk de help over pakketten in de huidige bibliotheek door op Ctrl + 3 te drukken.
- Zie R-variabelen in de Variable Explorer door op Ctrl+8 te drukken.
Volgende stappen
Twee verschillende zelfstudies bevatten oefeningen, zodat u kunt oefenen met het overschakelen van de rekencontext van lokaal naar een extern SQL Server-exemplaar.