仍然是BCP,求大神

rainychan2009 2010-12-29 07:34:11
我们的系统遇到一个问题就是,有很多条数据,通常是上万,如果用普通的SQL,循环插入效率跟不上,因此想用BCP的方式插入数据,但是现在的问题是:
1.我在本地在“运行”中可以正常的写
2.用程序的方式在本地计算机可以正常的朝服务器上的SQL写
3.在服务器上“运行”中可以正常的写
但是,在服务器上涌程序就有问题:cmd的窗口弹出来一下子,然后就自动关闭了,但是数据却没有能写进去,不知道是什么原因
...全文
114 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainychan2009 2011-01-01
  • 打赏
  • 举报
回复
小小用了下BCP,发现了很多的问题,如果以后大家以后用BCP遇到问题的话,就查我的帖子哈,分数有限,每个人都分点,呵呵!
rainychan2009 2011-01-01
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 andkylee 的回复:]

引用 11 楼 billpu 的回复:

不太清楚你的程序是怎么调用的
试试把bcp.exe和bcp.rll copy到你的程序同一个目录下看看

哥们搞sql2000比较熟吧。 sql2005 还有sql2008这样行?
[/Quote]
行的
rainychan2009 2011-01-01
  • 打赏
  • 举报
回复
谢谢各位,后来发现是因为命令行中是用空格来解析命令和参数的,但是我很悲剧的是把要上传的文本放在了C盘的C:\Program Files\...
后来发现需要加双引号来来解决这个问题,谢谢各位了!
guguda2008 2010-12-31
  • 打赏
  • 举报
回复
用System.Data.SqlClient下的SqlBulkCopy类就可以了,我现在写大数据加载的就是用这个。BCP更多用来做临时的数据转移。
关于你现在问题,推测是权限不够之类 的,加个readline,看看输出的是什么报错信息吧。
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 billpu 的回复:]

不太清楚你的程序是怎么调用的
试试把bcp.exe和bcp.rll copy到你的程序同一个目录下看看
[/Quote]
哥们搞sql2000比较熟吧。 sql2005 还有sql2008这样行?
yyfhz 2010-12-30
  • 打赏
  • 举报
回复
记得Vista下面跑很多程序都得 右键=>"以管理员身份运行", 不知道2003对外部安装的程序是否也有类似的权限限定。
王向飞 2010-12-30
  • 打赏
  • 举报
回复
打开cmd

把你的bat
拖进DOS命令下,看看怎么执行的
kevin_long 2010-12-30
  • 打赏
  • 举报
回复
把bcp.exe和bcp.rll copy到你的程序同一个目录下
sunstarduo 2010-12-30
  • 打赏
  • 举报
回复
加pause看下有什么报错信息
-晴天 2010-12-29
  • 打赏
  • 举报
回复
远程连接,即席远程查询,xp_cmdshell这三项服务都得打开.
-晴天 2010-12-29
  • 打赏
  • 举报
回复
远程服务打开了吗?
billpu 2010-12-29
  • 打赏
  • 举报
回复
不太清楚你的程序是怎么调用的
试试把bcp.exe和bcp.rll copy到你的程序同一个目录下看看
rainychan2009 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 billpu 的回复:]
服务器上运行cmd 输入你的上述语句 看报什么错
[/Quote]
我都已经说了,在服务器和本机在“运行”中运行是没有问题的,但是就是用程序的方式在服务器上运行就写不进去,或许是配置方面的问题
billpu 2010-12-29
  • 打赏
  • 举报
回复
服务器上运行cmd 输入你的上述语句 看报什么错
rainychan2009 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qianjin036a 的回复:]
不明白你的普通程序是什么意思,在客户端企业管理器上,还是编了一个客户端程序?
[/Quote]
没有那么麻烦啊,就是一个EXE,直接向SQL写数据,因为那些数据我用sql匹配的格式存放在一个文本中,,所以就是在程序中调用命令行模拟BCP,文本内容类似下面:
bcp DATABASE.DBO.TABLE in 文本文件名 -c -S ServerName -U sa -P password
-晴天 2010-12-29
  • 打赏
  • 举报
回复
不明白你的普通程序是什么意思,在客户端企业管理器上,还是编了一个客户端程序?
rainychan2009 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 billpu 的回复:]
服务器用程序写是什么概念 写了个批处理?
[/Quote]
差不多,就是WinExeC(sCmd),sCMD就是我在“运行”中输入的字符串
rainychan2009 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qianjin036a 的回复:]
貌似在客户端用程序写吧?
或许程序有问题,或许权限不够.
[/Quote]
其实是一个服务连接到sql2005,然后服务朝SQL写数据。我把写的功能提取出来测试,写成一个普通程序,然后分别在自己的机子上朝服务器写数据,在服务器上运行普通程序写数据,但是服务器上就是写不进去
billpu 2010-12-29
  • 打赏
  • 举报
回复
服务器用程序写是什么概念 写了个批处理?
rainychan2009 2010-12-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qianjin036a 的回复:]
貌似在客户端用程序写吧?
或许程序有问题,或许权限不够.
[/Quote]
程序就简单的调用了DOS命令执行bcp,至于权限请说明?我把程序做成服务仍然不行啊,服务是系统级别的。
那怎样加程序的权限呢?
我在本地朝服务器写数据为什么就没这个问题呢?
加载更多回复(2)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧