Как кормить представление из веб-службы, которая возвращает JSON? - PullRequest
1 голос
/ 12 июня 2019

Разработчики создали веб-сервис, который возвращает JSON с данными сотрудника, мне нужно заполнить или заполнить представление его данными.

Новые бизнес-требования требуют от нас предотвращения прямого соединения БД с БД, поэтому мне придется обходиться без связанных серверов :(

USE [test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[EMP]
AS
BEGIN

    set nocount on
    SET FMTONLY OFF

    DECLARE @status int
    DECLARE @responseText as table(responseText varchar(max))
    DECLARE @res as Int;
    DECLARE @url as nvarchar(1000) = 'http://websrvtst2:8086/ENFER_API/api/DatosEmpleado'
    EXEC sp_OACreate 'MSXML2.ServerXMLHTTP.3.0', @res OUT
    EXEC sp_OAMethod @res, 'open', NULL, 'GET',@url,'false'
    EXEC sp_OAMethod @res, 'send'
    EXEC sp_OAGetProperty @res, 'status', @status OUT

    INSERT INTO @ResponseText (ResponseText) EXEC sp_OAGetProperty @res, 'responseText' 
    EXEC sp_OADestroy @res


    DECLARE @json AS NVARCHAR(MAX)

    SELECT @json = responseText FROM @responseText


    SELECT * FROM 
    OPENJSON(@json)--, N'$.elements')
    WITH (   
         [planta] nvarchar(max) N'$.planta'   ,
          [codempleado]   nvarchar(max) N'$.codempleado',
          [Sexo]   nvarchar(max) N'$.Sexo',
          [FechaNac]   nvarchar(max) N'$.FechaNac',
          [FullName]   nvarchar(max) N'$.FullName',
          [Plaza]   nvarchar(max) N'$.Plaza',
          [Identidad]   nvarchar(max) N'$.Identidad',
          [ISSS]   nvarchar(max) N'$.ISSS',
          [Razon_Social]   nvarchar(max) N'$.Razon_Social',
          [Departamento]   nvarchar(max) N'$.Departamento',
          [Jornada]   nvarchar(max) N'$.Jornada',
          [Unidad]   nvarchar(max) N'$.Unidad',
          [Celda]   nvarchar(max) N'$.Celda',
          [Operacion]   nvarchar(max) N'$.Operacion',
          [Make]   nvarchar(max) N'$.Make'
    ) 

    RETURN 0

END

при выполнении: EXEC [TEST]. [DBO] .EMP возвращает данные в виде сетки

Я ожидаю, что смогу выбрать вид и получить эту сетку взамен.

1 Ответ

0 голосов
/ 12 июня 2019

В SQL Server 2017 вы можете опубликовать пакет служб SSIS в виде представления SQL.

В этом случае при выполнении запроса к представлению механизм SQL запустит пакет служб SSIS.
Для отправки данных в представление необходимо использовать специальное назначение SSIS: «Место назначения потоков данных». Более подробную информацию можно найти в пошаговом руководстве: Публикация пакета служб SSIS в виде SQL *

В этом решении вам потребуется создать связанный сервер с экземпляром служб SSIS, но это не будет прямое соединение БД с БД, и вы будете использовать веб-службу для получения данных, поэтому она будет соответствовать вашим требованиям. На связанном сервере вы будете использовать новый поставщик OLEDB "SSISOLEDB".

Для получения данных из веб-службы вы можете использовать собственный код C # / VB или использовать некоторые из предопределенных задач, например Задача веб-службы , а затем десериализовать JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...