Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
通过SP从Sql Server 2012查询ihistorian_Sql_Stored Procedures_Sql Server 2012_Windows Server 2012 - Fatal编程技术网

通过SP从Sql Server 2012查询ihistorian

通过SP从Sql Server 2012查询ihistorian,sql,stored-procedures,sql-server-2012,windows-server-2012,Sql,Stored Procedures,Sql Server 2012,Windows Server 2012,我正在使用sql server 2012运行windows server 2012,并将服务器链接到GE的iHistorian 使用2012框中的ManagementStudio如果执行以下存储过程,将收到以下错误消息,sql server将重新启动 从服务器接收结果时发生传输级别错误。提供程序:共享内存提供程序,错误:0-管道已结束 如果我通过management studio从PC运行SP,则不会显示错误消息。 这是一个主要问题,因为它在SQLServer2008上运行良好,没有任何问题。我

我正在使用sql server 2012运行windows server 2012,并将服务器链接到GE的iHistorian

使用2012框中的ManagementStudio如果执行以下存储过程,将收到以下错误消息,sql server将重新启动

从服务器接收结果时发生传输级别错误。提供程序:共享内存提供程序,错误:0-管道已结束

如果我通过management studio从PC运行SP,则不会显示错误消息。
这是一个主要问题,因为它在SQLServer2008上运行良好,没有任何问题。我被谷歌搜索出来了,有人能帮我吗

sql server将重新启动-a你确定吗?是的,实例将脱机,然后重新启动。我查了一下日志,“我从未见过这种行为
    USE [Optimiser]
GO
/****** Object:  StoredProcedure [dbo].[OptimiserPullDataFromHistorian]    Script Date: 21/08/2013 14:15:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[OptimiserPullDataFromHistorian]

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;



    declare @iHistorianName varchar(32)
    set @iHistorianName = 'IHISTORIAN'

    declare @sqlWhere varchar(max)
    set @sqlWhere='where '

    declare @Tagname varchar(32)
    DECLARE rsWhere CURSOR FOR 
    SELECT TagName FROM OptimiserTags
    OPEN rsWhere
    FETCH NEXT FROM rsWhere INTO @Tagname 
    WHILE @@FETCH_STATUS = 0
    BEGIN
        set @sqlWhere=@sqlWhere + ' tagname="' + @Tagname + '" or'

    FETCH NEXT FROM rsWhere INTO @Tagname
    END
    CLOSE rsWhere
    DEALLOCATE rsWhere

    set @sqlWhere= left(@sqlWhere,len(@sqlWhere)-2)

    declare @sqlQuery varchar(max)
    declare @finalQuery varchar(max)

    declare @StartDate datetime
    declare @EndDate datetime

    set @EndDate= {fn now()}
    set @StartDate= DATEADD (hh , -1 , @EndDate )

/*
--current value
    SET @sqlQuery = '
                    SET SamplingMode=CurrentValue,Rowcount=0, 
                    SELECT ihtags.description as tagdescription,ihRawData.tagname, ihRawData.timestamp, 
                    ihRawData.value, ihRawData.quality 
                    FROM ihRawData inner join ihtags on ihtags.tagname=ihRawData.tagname
                    ' + @sqlWhere 
*/
--1 hour averages
    SET @sqlQuery = '
                    SET SamplingMode=CurrentValue,Rowcount=0,
                    StartTime="' + cast(@StartDate as varchar) + '",
                    EndTime="' + cast(@EndDate as varchar) + '",
                    IntervalMilliseconds=1h,
                    SamplingMode=Calculated ,
                    calculationmode=Average,
                    SELECT ihtags.description as tagdescription,ihRawData.tagname, ihRawData.timestamp, 
                    ihRawData.value, ihRawData.quality 
                    FROM ihRawData inner join ihtags on ihtags.tagname=ihRawData.tagname
                    ' + @sqlWhere 



    SET @finalQuery =   '
                        SELECT OptimiserTags.tagname, OptimiserTags.OptimiserDescription, iHist.tagdescription, 
                        DATEADD (n , -60 , cast(iHist.timestamp as datetime)) timestamp
                        , iHist.value,iHist.quality, Units, LessThanOffline, MinValue
                        FROM OptimiserTags 
                        LEFT OUTER JOIN  (
                        SELECT tagdescription, tagname, timestamp,  value, quality FROM OPENQUERY
                                (' + @iHistorianName + ',''' + @sqlQuery + ''')
                                ) iHist on OptimiserTags.TagName=iHist.Tagname COLLATE DATABASE_DEFAULT
                        ORDER BY OptimiserTags.SortOrder
                        '
                --select @finalQuery            
    exec(@finalQuery)

END