免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2937 | 回复: 10
打印 上一主题 下一主题

更新sql server 数据库的问题,敬请关注! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-12 09:48 |只看该作者 |倒序浏览
我用perl程序,通过odbc连接sql server2000,逐条更新一个有200,000记录的表,程序运行起来以后,更新了几百条,就自己停止了,但是没有报错,再运行,更新的比上一次要多些,但是过一会儿又停止了!请问真是什么原因造成的?
是连接方式的原因?还是资源没释放?还是其他原因?

论坛徽章:
0
2 [报告]
发表于 2007-04-12 09:58 |只看该作者
原帖由 hcduguo 于 2007-4-12 09:48 发表
我用perl程序,通过odbc连接sql server2000,逐条更新一个有200,000记录的表,程序运行起来以后,更新了几百条,就自己停止了,但是没有报错,再运行,更新的比上一次要多些,但是过一会儿又停止了!请问真是什么 ...


把数据库部分的代码帖出来看看,猜想 应该是数据库方面的问题

论坛徽章:
0
3 [报告]
发表于 2007-04-12 11:04 |只看该作者

主要代码如下!

$DSN = "DSN=test;UID=saWD=;";
$data = new Win32::ODBC($DSN);  # new 一个连接对象       
$ndata = new Win32::ODBC($DSN);  # new 一个连接对象  
$data->Sql("SELECT id,address,company_name FROM company";
while ($data->FetchRow()) {
        $city='';
        my @dataRow = $data->Data();
        my $id=$dataRow[0];;
        my $address=$dataRow[1];
        $city=GetLabelValue('city');

        my $csql="update company set city='$city' where id=$id";
        $ndata->Sql($csql);

        print "$csql\n";
}
$data->Close();
$ndata->Close();

论坛徽章:
0
4 [报告]
发表于 2007-04-12 13:48 |只看该作者
原帖由 hcduguo 于 2007-4-12 11:04 发表
$DSN = "DSN=test;UID=saWD=;";
$data = new Win32::ODBC($DSN);  # new 一个连接对象       
$ndata = new Win32::ODBC($DSN);  # new 一个连接对象  
$data->Sql("SELECT id,address,company_ ...

Set:
$ndata->Debug(1);
$ndata->Debug(1);
看看如何

论坛徽章:
0
5 [报告]
发表于 2007-04-12 15:58 |只看该作者
Set:
$ndata->Debug(1);
$ndata->Debug(1);
看看如何

加上效果同以前一样!没什么其他的反应!

论坛徽章:
0
6 [报告]
发表于 2007-04-12 21:11 |只看该作者
原帖由 hcduguo 于 2007-4-12 15:58 发表
Set:
$ndata->Debug(1);
$ndata->Debug(1);
看看如何

加上效果同以前一样!没什么其他的反应!

没有日志信息吗?

论坛徽章:
0
7 [报告]
发表于 2007-04-13 17:22 |只看该作者
没有日志!
还有其他好办法吗?
哥们有时间帮着给测试一下!
前两周我做了更新,每次能跟新几万条,然后就停止了!凑合着还能用,现在每次才更新几百条,要是一次一次手动操作更新,就得累死!

论坛徽章:
0
8 [报告]
发表于 2007-04-19 10:09 |只看该作者
有人能给解释一下吗?是不是ODBC不好用的缘故啊?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2007-04-19 10:12 |只看该作者
关键你得搞清楚你的程序错在哪儿。
自始至终你都没有给大家提供任何有帮助的信息,没法查原因。

论坛徽章:
0
10 [报告]
发表于 2007-04-19 10:32 |只看该作者
一次把200000全部取出来,你也不嫌累,如果可能的话你还是写个存储过程完成你的功能把,比perl快,也好调试;如果你特别想用perl完成,建议你每次取出1000条更新,直到更新完所有的数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP