2017-07-11 8 views
1

Dieser Code funktioniert perfekt in R-Studio, aber es gibt keine Möglichkeit, es in MS Management Studio arbeiten zu lassen. Es sagt weiter:SQL funktioniert in R Studio, aber nicht in R-Serivces

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'myserver\LOCAL01'. 

Das ist nicht mein Benutzer geben, es ist eine vertrauenswürdige Verbindung. Kann mir jemand helfen, es zu verstehen?

ALTER PROCEDURE [dbo].[TESTIM] AS 
BEGIN 
    SET LANGUAGE ENGLISH 
    CHECKPOINT  
    DBCC DROPCLEANBUFFERS 
    EXEC sp_execute_external_script 
     @language = N'R' 
     , @script = N' 
     con <- "Server=myserver\\LOCAL;Database=mydb;Trusted_Connection=true"; 
     sql <- RxInSqlServer(connectionString = con, shareDir = "c:\\TMP"); 
     local <- RxLocalSeq(sql); 
     rxSetComputeContext(local) 
     ff <- RxSqlServerData(sqlQuery = "select top 1 * from mytable", connectionString = con); 
     t = rxImport(ff); 
     OutputDataSet <- data.frame(SUCCESS = TRUE); 
     ' 
    WITH RESULT SETS (([SUCCESS] BIT)) 
END 

Antwort

4

Also, wenn Sie sp_execute_external_script ausführen führt sie unter einem von 20 Windows-Benutzerkonten (Arbeitnehmer-Konten), die während der Installation von SQL Server R Services erstellt wurde. Diese Konten werden zum Ausführen von Aufgaben unter einem Sicherheitstoken erstellt, das dem SQL Server Trusted Launchpad-Dienst gehört.

Das funktioniert sehr gut, aber wenn Sie eine SQL-Verbindung innerhalb Ihres R-Skripts erstellen müssen (wie in Ihrem Fall) und Sie eine vertrauenswürdige Verbindung (Windows-Authentifizierung) verwenden, führen Sie unter dem oben genannten Benutzerkonto ('myserver \ LOCAL01 'in Ihrem Fall, und diesem Konto muss die Berechtigung erteilt werden, sich in Ihrem Namen bei der SQL Server-Instanz anzumelden.

dies zu tun:

  1. in dem SQL Server Management Studio, in Objekt-Explorer erweitern Sicherheit mit der rechten Maustaste auf Benutzernamen, und wählen Sie Neue Anmeldung.
  2. Klicken Sie im Dialogfeld Anmelden - Neu auf Suchen.
  3. Klicken Sie auf Objekttypen und wählen Sie Gruppen. Deaktivieren Sie alles andere.
  4. In Geben Sie den zu wählenden Objektnamen ein, geben Sie SQLRUserGroup ein und klicken Sie auf Namen überprüfen.
  5. Der Name der lokalen Gruppe, die dem Launchpad-Dienst der Instanz zugeordnet ist, sollte in etwa in Instanzname \ SQLRUserGroup aufgelöst werden. OK klicken.
  6. Standardmäßig ist die Anmeldung der öffentlichen Rolle zugewiesen und berechtigt, eine Verbindung zur Datenbank-Engine herzustellen.
  7. Klicken Sie auf OK.

Das sollte es (die obigen Schritte ausführen von here kopiert werden.

Wenn Sie mehr lesen möchten über den Benutzer, den Sie macht einen Blick auf mein Blog-Post "Microsoft SQL Server R Services - Internals III".

Hoffnung

haben dies hilft!

Niels

Verwandte Themen