Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
hulk77 Member Откуда: Сообщений: 123 |
Добрый день На стороне 1С поднят web-сервис, на PowerShell регулярно выполняются http запросы, и результаты выгружаются в JSON-файлы. Пример PowerShell запроса:
Возникла идея, может возможно отправлять запросы с SQL Server, а результаты выгружать в его таблицы Нашел в интернете процедуру:
Для выполнения необходима авторизация сервера 1С Как правильно выполнить эту процедуру с моим запросом, чтобы получить результат выгрузки? Для примера вписал в @sUrl запрос в методе PowerShell Invoke-RestMethod, чтобы показать всю структуру запроса:
Буду благодарен за подсказку |
|||
16 авг 16, 10:41 [19545772] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8353 |
Вы должны передать в @sUrl строку, которая формируется в $Запрос. Но эта процедура не обрабатывает результат. Кроме того, на сервере БД потребуется разрешить выполнение OLE, что открывает дыру в безопасности. |
16 авг 16, 13:54 [19547248] Ответить | Цитировать Сообщить модератору |
Ролг Хупин Member Откуда: Чебаркуль Сообщений: 3990 |
SQLCLR процедура |
16 авг 16, 14:10 [19547356] Ответить | Цитировать Сообщить модератору |
hulk77 Member Откуда: Сообщений: 123 |
В задаче пошел немного другим путем Запрос к веб-серверу оставил на PowerShell, но запускать выполнение настроил с SQL Server, и результат запросов вместо JSON отправляю во временную таблицу, с которой через OPENJSON (появился в SQL SERVER 2016) парсится в постоянную таблицу Не удалось все решить только на уровне T-SQL, но в принципе не проблема поместить PS1 скрипт в папку на сервере Если кому-то понадобится Скрипт на PowerShell $username = "user" $password = "password" | ConvertTo-SecureString -asPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($username,$password) $link = 'http://10.1.40.61/1C_Bases/hs/getting/user/password/' $ЗапросСтатьи = 'Выбрать Ссылка КАК Статья Из Справочник.Статьи' $ЗапросСтатьи = $link + $ЗапросСтатьи $a = Invoke-RestMethod $ЗапросСтатьи -Credential $cred -TimeoutSec 600 Clear-Host $conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=SQL; User ID=analuseryst; Password=password; Initial Catalog=Data; Integrated Security=SSPI") $conn.Open() $cmd = $conn.CreateCommand() $cmd.CommandText ="INSERT INTO [dbo].[temp_1C_request] ([JSON_string],[mark]) VALUES ('"+ $a +"','Статьи')" $cmd.ExecuteNonQuery() $conn.Close() Вот запрос на T-SQL -- Запускаю выполнение командлета EXEC xp_cmdshell 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File "C:\PowerShellScript.ps1" -ExecutionPolicy Unrestricted' GO -- Заполнение таблицы Статьи DECLARE @JStringsStat nvarchar(MAX) SET @JStringsStat =(SELECT [JSON_string] FROM [Data].[dbo].[temp_1C_request] WHERE [mark] = 'Статьи') SET @JStringsStat = STUFF(@JStringsStat ,1,1,'') -- в моей строке вначале не нужный "?" TRUNCATE TABLE [Data].[dbo].[Статьи] INSERT INTO [Data].[dbo].[Статьи] ([Код],[Статья]) SELECT код,статья FROM OPENJSON (@JStringsStatDDS, '$.value') WITH ( код nvarchar(20), статья nvarchar(100) ) |
16 авг 16, 20:07 [19549488] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |