Я использую службу r в SQL Server 2016 для создания текстового файла с сообщением в нем. Выход хранимой процедуры - это двоичный файл этого файла. Я использую библиотеку hexView
, которую я установил в r моего сервера. Следующая функция, которую я создал в SQL:
CREATE PROCEDURE [tmp].[Message] @MessageV NVARCHAR(1000)
,@FileName NVARCHAR(100)
AS
BEGIN
DECLARE @Message NVARCHAR(1000)
,@FName NVARCHAR(100)
EXECUTE sp_execute_external_script @language = N'R'
,@script = N'
library(hexView)
File <- paste0(FName,".txt")
write.table(Message, file = File, row.names = FALSE, col.names = FALSE, quote = FALSE)
OutputDataSet <- data.frame(readRaw(File)$fileRaw)
'
,@params = N' @FName NVARCHAR(100)
,@Message NVARCHAR(1000)'
,@Message = @MessageV
,@FName = @FileName
END
И для запуска этой функции.
exec [tmp].[Message] @MessageV = 'This is a random message', @FileName = 'TextFile'
При первом ее запуске требуется около 25 секунд. Непосредственно последние запуски занимают только 1 се c. Но если я рутирую это как 20 минут спустя, это снова занимает 25 секунд. Я думаю, что дополнительное время - это запуск службы r внутри SQL.
. Есть ли способ или конфигурация, позволяющие поддерживать службы R каждый момент так, чтобы при каждом запуске потребовалось 1 сек c?
Я много искал, но не нашел ничего подходящего. Спасибо с уважением.