Security
After configuring the database and any other additional settings used in your ecosystem, you will want to think about security, in terms of who will have access to run sp_execute_external_script
.
You can directly create security settings on the external procedure. In this case, you will need to add database permissions to execute external script to the user.
A simple SQL login will look like this:
USE [master]GOCREATE LOGIN [RR1] WITH PASSWORD=N'Read!2$17', DEFAULT_DATABASE=[SQLR], CHECK_EXPIRATION=ON, CHECK_POLICY=ONGOALTER SERVER ROLE [sysadmin] ADD MEMBER [RR1]GOCREATE DATABASE SQLR;GOUSE [SQLR]GOCREATE USER [RR1] FOR LOGIN [RR1]GOUSE [SQLR]GOALTER USER [RR1] WITH DEFAULT_SCHEMA=[dbo]GO
And now, let's start the external procedure:
EXECUTE AS USER = 'RR1';GOEXEC sp_execute_external_script @language = N'R' ,@script = N'OutputDataSet<- InputDataSet' ,@input_data_1 = N'SELECT 1 AS Numb UNION ALL SELECT 2;'WITH RESULT SETS(( Res INT))REVERT;GO
And the error message will...