Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从返回JSON的Web服务提供视图?_Json_Sql Server - Fatal编程技术网

如何从返回JSON的Web服务提供视图?

如何从返回JSON的Web服务提供视图?,json,sql-server,Json,Sql Server,开发人员已经创建了一个Web服务,它返回一个包含员工数据的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 @sta

开发人员已经创建了一个Web服务,它返回一个包含员工数据的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以网格形式返回数据


我希望能够选择一个视图并获得该网格作为回报。

在SQL Server 2017中,您可以将SSIS包发布为SQL视图

在这种情况下,当您对视图执行查询时,SQL引擎将启动SSIS包。 您必须使用特殊的SSIS目的地:数据流目的地将数据推送到视图。您可以在演练中找到更多详细信息:

在此解决方案中,您将需要创建一个链接到SSIS实例的服务器,但它不是直接的DB到DB连接,您将使用Web服务获取数据,因此它将满足您的要求。在链接服务器中,您将使用新的OLEDB提供程序SSIOLEDB


要从web服务获取数据,您可以使用自定义C/VB代码或使用一些预定义的任务,例如,然后反序列化JSON。

在SQL Server 2017中,您可以将SSIS包发布为SQL视图

在这种情况下,当您对视图执行查询时,SQL引擎将启动SSIS包。 您必须使用特殊的SSIS目的地:数据流目的地将数据推送到视图。您可以在演练中找到更多详细信息:

在此解决方案中,您将需要创建一个链接到SSIS实例的服务器,但它不是直接的DB到DB连接,您将使用Web服务获取数据,因此它将满足您的要求。在链接服务器中,您将使用新的OLEDB提供程序SSIOLEDB


要从web服务获取数据,您可以使用自定义C/VB代码或使用一些预定义任务,例如,然后反序列化JSON。

您在这里的实际问题是什么?您从web服务接收数据,然后查询它返回的JSON。简单明了你不能用视图来做这件事。这附近没有工作。@SeanLange我知道没有工作,我只是希望我的知识有缺陷,有人有一个解决方案,最终我会创建一个作业,每天填写两次表,或者告诉开发人员直接从应用程序查询web服务@PM77-1尝试向视图提供JSON fo返回的数据。开发人员无需更改应用程序。如果数据不必是实时的,并且每天刷新一次或两次是可以接受的,则可以在需要时填充表并在表上创建视图。或者需要是实时的,在应用程序中执行此操作或调用您的您实际的问题是什么?您从一个Web服务接收数据,然后查询它返回的JSON。简单明了你不能用视图来做这件事。这附近没有工作。@SeanLange我知道没有工作,我只是希望我的知识有缺陷,有人有一个解决方案,最终我会创建一个作业,每天填写两次表,或者告诉开发人员直接从应用程序查询web服务@PM77-1尝试向视图提供JSON fo返回的数据。开发人员无需更改应用程序。如果数据不必是实时的,并且每天刷新一次或两次是可以接受的,则可以在需要时填充表并在表上创建视图。或者需要是实时的,在应用程序中执行此操作或调用您的过程。