0

GEのiHistorianにリンクされたサーバーを備えたSQLサーバー2012でWindowsサーバー2012を実行しています。

2012 ボックスの管理スタジオを使用して、次のストアド プロシージャを実行すると、次のエラー メッセージが表示され、SQL サーバーが再起動します。

サーバーから結果を受信中にトランスポート レベルのエラーが発生しました。(プロバイダー: 共有メモリ プロバイダー、エラー: 0 - パイプが終了しました。)

    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 

PC から Management Studio 経由で SP を実行すると、エラー メッセージは表示されません。これは、SQL Server 2008 で問題なく正常に動作したため、大きな問題です。私はグーグルアウトされているので、誰か助けてもらえますか!!

4

0 に答える 0