2017-07-11 11 views
1

このコードはR-Studioで完全に機能しますが、MS Managementスタジオで動作させる方法はありません。SQLはRスタジオでは動作しますが、R-Serivcesでは動作しません

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

これは、信頼できる接続であることを示す私のユーザーではありません。誰かが私の理解を助けることができますか?あなたがsp_execute_external_scriptを実行するとき

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 

答えて

4

だから、それは、SQL ServerのR・サービスのインストール時に作成された20件のWindowsユーザーアカウント(労働者アカウント)のいずれかの下実行されます。これらのアカウントは、SQL Server Trusted Launchpadサービスに属するセキュリティトークンでタスクを実行する目的で作成されます。

これはうまくいきますが、あなたのRスクリプト内でSQL接続を作成する必要がある場合(あなたのケースのように)、信頼できる接続(Windows認証)を使用する場合、上記のユーザーアカウント\ LOCAL01 ')、そのアカウントに代わってSQL Serverインスタンスにログインするためのアクセス許可を与える必要があります。 、オブジェクトエクスプローラで、SQL Server Management Studioで

  1. セキュリティ]を展開し、[ログイン]を右クリックし、[新規ログイン]を選択します。

    これを行うにしてください。

  2. [ログイン - 新規作成]ダイアログボックスで、[検索]をクリックします。
  3. オブジェクトタイプをクリックし、グループを選択します。他のすべての選択を解除します。
  4. 選択するオブジェクト名を入力するには、「SQLRUserGroup」と入力し、「名前の確認」をクリックします。
  5. インスタンスのLaunchpadサービスに関連付けられているローカルグループの名前は、instancename \ SQLRUserGroupのような名前に解決されます。 [OK]をクリックします。
  6. デフォルトでは、ログインはパブリックロールに割り当てられ、データベースエンジンに接続する権限があります。
  7. [OK]をクリックします。
  8. (上記の手順が hereからコピーされ、それを行う必要があります

ユーザーについての詳細を読みたい場合は、私のブログポスト"Microsoft SQL Server R Services - Internals III"を見ていることができますアカウントは。

・ホープこれが役に立ちます。

Niels

関連する問題