在MSSQL2008下反复执行pSaveCanData过程,过程有一XML文件参数,达十几K,当SQL内存达到近2G时报如下错误:
消息 6624,级别 16,状态 7,过程 sp_xml_preparedocument,第 1 行
无法创建 XML 文档,因为服务器内存不足。请使用 sp_xml_removedocument 释放 XML 文档。
消息 701,级别 17,状态 123,过程 pSaveCanData,第 14 行
资源池 'default' 没有足够的系统内存来运行此查询。
关闭执行一段时间后,又可以执行了,重启数据库也可以再次执行,恳请各位怎么解决这个问题?
pSaveCanData过程描写如下:
create PROCEDURE [dbo].[pSaveCanData] @CarMark varchar(20),@RecvTime datetime,@CanDataXML text
AS
SET NOCOUNT ON;
if (@CanDataXML is not null)
begin
declare @CanData int
EXEC Sp_xml_preparedocument @CanData OUTPUT,@CanDataXML
EXEC Sp_xml_preparedocument @CanData OUTPUT,@CanDataXML
begin tran
--事务开始
.......执行XML文档插入操作IF @@Error=0
BEGIN
COMMIT TRANSACTION --事务提交
return 0
END
ELSE BEGIN
ROLLBACK TRANSACTION --事务回滚
return -1
END
EXEC Sp_xml_removedocument @CanData
消息 6624,级别 16,状态 7,过程 sp_xml_preparedocument,第 1 行
无法创建 XML 文档,因为服务器内存不足。请使用 sp_xml_removedocument 释放 XML 文档。
消息 701,级别 17,状态 123,过程 pSaveCanData,第 14 行
资源池 'default' 没有足够的系统内存来运行此查询。
关闭执行一段时间后,又可以执行了,重启数据库也可以再次执行,恳请各位怎么解决这个问题?
pSaveCanData过程描写如下:
create PROCEDURE [dbo].[pSaveCanData] @CarMark varchar(20),@RecvTime datetime,@CanDataXML text
AS
SET NOCOUNT ON;
if (@CanDataXML is not null)
begin
declare @CanData int
EXEC Sp_xml_preparedocument @CanData OUTPUT,@CanDataXML
EXEC Sp_xml_preparedocument @CanData OUTPUT,@CanDataXML
begin tran
--事务开始
.......执行XML文档插入操作IF @@Error=0
BEGIN
COMMIT TRANSACTION --事务提交
return 0
END
ELSE BEGIN
ROLLBACK TRANSACTION --事务回滚
return -1
END
EXEC Sp_xml_removedocument @CanData
create PROCEDURE [dbo].[pSaveCanData] @CarMark varchar(20),@RecvTime datetime,@CanDataXML text
AS
SET NOCOUNT ON;
if (@CanDataXML is not null)
begin
declare @CanData int
EXEC Sp_xml_preparedocument @CanData OUTPUT,@CanDataXML
EXEC Sp_xml_preparedocument @CanData OUTPUT,@CanDataXML
begin tran
--事务开始
.......执行XML文档插入操作IF @@Error=0
BEGIN
COMMIT TRANSACTION --事务提交
EXEC Sp_xml_removedocument @CanData
return 0
END
ELSE BEGIN
ROLLBACK TRANSACTION --事务回滚
EXEC Sp_xml_removedocument @CanData
return -1
END
to:ldslove
我是要实现把一个数据集插入数据库(行数不定),2008还有什么执行XML文件更好的方式吗?
谢谢,正在测试。