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