Sql server 2005 亚音速3.0.0.3在多次保存操作时超时。MSSQL2005
我正在读取csv文件,并将信息插入sql 2005数据库中 大约250次object.save操作后,它将超时。这里是代码和确切的错误消息。这不是代码的第一个版本,但它总是给出相同的超时时间 这不是一个大数据库,只有两个表。有什么我没做的吗?它是否为每个保存操作打开和关闭连接。欢迎所有关于这个问题的意见Sql server 2005 亚音速3.0.0.3在多次保存操作时超时。MSSQL2005,sql-server-2005,subsonic,Sql Server 2005,Subsonic,我正在读取csv文件,并将信息插入sql 2005数据库中 大约250次object.save操作后,它将超时。这里是代码和确切的错误消息。这不是代码的第一个版本,但它总是给出相同的超时时间 这不是一个大数据库,只有两个表。有什么我没做的吗?它是否为每个保存操作打开和关闭连接。欢迎所有关于这个问题的意见 List<shipment> oLstShipments = new List<shipment>(); while (oReader.ReadNextRecord())
List<shipment> oLstShipments = new List<shipment>();
while (oReader.ReadNextRecord())
{
int iIdShipment;
if (int.TryParse(oReader[0], out iIdShipment))
{
shipment oShipment = new shipment();
oShipment.idShipment = iIdShipment;
oShipment.dateDelivered = oReader[1];
oShipment.inventoryGroup = oReader[2];
oShipment.companyId = oReader[3];
oShipment.shipTo = oReader[4];
oShipment.carrier = oReader[5];
oShipment.accountOwner = oReader[6];
oShipment.accountNumber = oReader[7];
oShipment.trackingNumber = oReader[8];
oLstShipments.Add(oShipment);
}
}
oReader.Dispose();
oSR.Dispose();
foreach (shipment oShip in oLstShipments)
{
oShip.Save();
}
测试#1
如果我尝试分离db,它将显示101个活动连接(1个用于management studio,其余用于代码)
如果像以前一样尝试使用repo处理列表,则会出现以下异常:System.Data.SqlClient.SqlException:传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。此RPC请求中提供的参数太多。最大值为2100
我很确定我做错了什么,我不可能是唯一一个想在数据库中插入这么多项目的人
编辑12/13/2009 09:44:00:
下面是创建装运表的脚本
/****** Object: Table [dbo].[shipment] Script Date: 12/11/2009 14:33:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[shipment](
[idShipment] [int] NOT NULL,
[dateDelivered] [varchar](255) NULL,
[inventoryGroup] [varchar](255) NULL,
[companyId] [varchar](255) NULL,
[shipTo] [varchar](255) NULL,
[carrier] [varchar](255) NULL,
[accountOwner] [varchar](255) NULL,
[accountNumber] [varchar](255) NULL,
[trackingNumber] [varchar](255) NULL,
[cebnowaybill] [varchar](50) NULL,
CONSTRAINT [PK_shipment] PRIMARY KEY CLUSTERED
(
[idShipment] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
超时是由于数据库没有可用的连接而导致的,我猜是因为某个读卡器处于打开状态 首先-为什么要读取下一条记录()?你是想用Read()吗?您还可以将读取器传递到Load()中,它将为您加载对象 最后,我建议将其包装在using语句中,以确保即使出现错误,读者和所有内容都已关闭 编辑:
在阅读下面的回答时-您是否为表定义了主键?超时是由于数据库没有可用的连接而导致的,我猜是因为某个读卡器在某个地方处于打开状态 首先-为什么要读取下一条记录()?你是想用Read()吗?您还可以将读取器传递到Load()中,它将为您加载对象 最后,我建议将其包装在using语句中,以确保即使出现错误,读者和所有内容都已关闭 编辑:
在阅读下面的回答时-您是否为表定义了主键?Sylvain与其告诉您如何解决问题,不如告诉您应该做什么。因此,与其担心如何保存每个单独的项目,而不必打开连接100次以上,您应该执行一次批处理操作,一次保存所有记录 下面是SimpleRepo的一个示例,但这也可以通过活动记录完成
var repo=new SimpleRepository();
repo.AddMany(oLstShipments);
Sylvain不是告诉你如何解决你的问题,而是告诉你应该做什么。因此,与其担心如何保存每个单独的项目,而不必打开连接100次以上,您应该执行一次批处理操作,一次保存所有记录 下面是SimpleRepo的一个示例,但这也可以通过活动记录完成
var repo=new SimpleRepository();
repo.AddMany(oLstShipments);
发布的版本3.0.0.3(7月)中有一个bug,但早期版本中没有。 它是一个rdr,没有使用using或后跟rdr.close进行包装。这会有我提到的效果。正在打开但未关闭的连接。。。这意味着连接池已满 正如在与Rob的多次电子邮件对话中所讨论的那样,它已被更正。您必须进入github上的source选项卡才能找到更正 多亏了你的帮助。特别感谢亚当(在这么多回复后没有放弃),也感谢罗布快速回复我的电子邮件
亚音速很好,花时间寻找问题的答案是值得的 发布的版本3.0.0.3(7月)中有一个bug,但早期版本中没有。 它是一个rdr,没有使用using或后跟rdr.close进行包装。这会有我提到的效果。正在打开但未关闭的连接。。。这意味着连接池已满 正如在与Rob的多次电子邮件对话中所讨论的那样,它已被更正。您必须进入github上的source选项卡才能找到更正 多亏了你的帮助。特别感谢亚当(在这么多回复后没有放弃),也感谢罗布快速回复我的电子邮件
亚音速很好,花时间寻找问题的答案是值得的 oReader与数据库无关,它是一个从文本文件读取记录的csv阅读器。对于每个记录,我使用亚音速添加一次装运。顺便说一句,你能回答问题真是太好了。您就是一个值得效仿的例子。我有一个sql server studio管理的连接打开。然后我启动了显示在那里的代码。。。亚音速将连接100次,然后就会失败。我有点惊讶,它将创建100个连接,似乎每个对象都有一个连接。我想它会使用一个连接并在所有对象上共享它。。。如果连接超时,它将自动重新连接。。我不知道亚音速的内部。我一定没有正确使用它。阅读其他帖子告诉我它会尽快打开和关闭连接。。。什么会使连接不关闭。。。或者没有足够快的接近。。。像这样的想法。但愿我能尽快得到答案reader与数据库无关,它是一个csv阅读器,可以从文本文件中读取记录。对于每个记录,我使用亚音速添加一次装运。顺便说一句,你能回答问题真是太好了。您就是一个值得效仿的例子。我有一个sql server studio管理的连接打开。然后我启动了显示在那里的代码。。。亚音速将连接100次,然后就会失败。我有点惊讶,它将创建100个连接,似乎每个对象都有一个连接。我想它会使用一个连接并在所有对象上共享它。。。如果连接超时,它将自动重新连接。。我不知道亚音速的内部。我一定不是在用它
/****** Object: Table [dbo].[shipment] Script Date: 12/11/2009 14:33:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[shipment](
[idShipment] [int] NOT NULL,
[dateDelivered] [varchar](255) NULL,
[inventoryGroup] [varchar](255) NULL,
[companyId] [varchar](255) NULL,
[shipTo] [varchar](255) NULL,
[carrier] [varchar](255) NULL,
[accountOwner] [varchar](255) NULL,
[accountNumber] [varchar](255) NULL,
[trackingNumber] [varchar](255) NULL,
[cebnowaybill] [varchar](50) NULL,
CONSTRAINT [PK_shipment] PRIMARY KEY CLUSTERED
(
[idShipment] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
var repo=new SimpleRepository();
repo.AddMany(oLstShipments);