环境是SQLServer2005
订单表中修改了几个字段的长度,原来是varchar(8000),改成了varchar(max)
修改后局域网中没有问题,但是更新到外网上又不行了,老是在下订单时提示超时情况:
网址1的数据库是一台服务器,单独的一个数据服务器,程序在这个下面运行出现了两笔/天的超时
剩余7个网址的数据库在其他一台服务器上,在这个服务器上的程序都不行,出现的超时情况比较多,而且订单量大的网址超时情况到少,订单量小的超时到多,不知道这个为什么?原理?如何解决我的疑虑:
1。是不是在多个数据库(一个实例)的情况下,SQLServer会自动优先处理量大的数据库信息?数据量小的数据库被安排到后面执行?
2.因为下订单过程中只涉及到了varchar(max)字段的增加以及修改,这样也会暂很多内存?如果现实这个字段的话也暂用很多吗?
想这种情况我该如何处理?从哪儿下手?期待高手解答
订单表中修改了几个字段的长度,原来是varchar(8000),改成了varchar(max)
修改后局域网中没有问题,但是更新到外网上又不行了,老是在下订单时提示超时情况:
网址1的数据库是一台服务器,单独的一个数据服务器,程序在这个下面运行出现了两笔/天的超时
剩余7个网址的数据库在其他一台服务器上,在这个服务器上的程序都不行,出现的超时情况比较多,而且订单量大的网址超时情况到少,订单量小的超时到多,不知道这个为什么?原理?如何解决我的疑虑:
1。是不是在多个数据库(一个实例)的情况下,SQLServer会自动优先处理量大的数据库信息?数据量小的数据库被安排到后面执行?
2.因为下订单过程中只涉及到了varchar(max)字段的增加以及修改,这样也会暂很多内存?如果现实这个字段的话也暂用很多吗?
想这种情况我该如何处理?从哪儿下手?期待高手解答
sqlcommand.CommandTimeout = 120
1.增加SQL服务器上登录时间最大设置
执行系统存储过程 sp_configure 设置里面的remote login timeout(s)
2.在客户端设置大的超时设置
比如sqlcommand.CommandTimeout=120默认时间单位大概都是秒
use db
go
select
a.index_id,---索引编号
b.name,---索引名称
avg_fragmentation_in_percent---索引的逻辑碎片
from
sys.dm_db_indx_physical_stats(db_id(),object_id(N'create.consume'),null,null,null) as a
join
sys.indexes as b
on
a.object_id=b.object_id
and
a.index_id=b.index_id
go---解释下sys.dm_db_indx_physical_stats的参数
datebase_id: 数据库编号,可以使用db_id()函数获取指定数据库名对应的编号。
object_id: 该索引所属表或试图的编号
index_id: 该索引的编号
partition_number:对象中分区的编号
mode:模式名称,用于指定获取统计信息的扫描级别。
有关sys.dm_db_indx_physical_stats的结果集中的字段名去查下联机丛书。