这样,你可以用sql profiler 监控一下,看insert 的时候,语句是怎么样的,报了什么错误。

解决方案 »

  1.   

    刚才开了 sql profiler 捕捉了一下, 不同的就是正常的电脑多了以下这种事务:
    本地(正常): BatchStarting, batchCompleted
    远程(异常): 无
      

  2.   

    哪里设置 bulk copy ?
      

  3.   


    你说是在c#中设置bulk copy?
      

  4.   

    程序中有一步是 BulkCopy
    最惨就是代码里面没有对这个捕捉异常,直接 return false 
      

  5.   

    在 SSMS 里面 Bulk Insert 没有问题。
    那边没有 debug 环境,只有在代码里 catch 一下了。
    等同事出版本明天再查
      

  6.   


    首先谢谢 【yupeigu】一直关注本帖。
    以下是我个人的初步结论:1.程序版本应该没有问题,问题发生的模块相对长时间没有发动了,而且就在今天早上,客服也更新了版本,与我所用的版本(非 debug 环境)基本没有什么区别。
    2.可以排除本数据库的配置问题,因为是直接 Restore 最新的backup.本数据库的所有配置应该是一致的。
    3.不能排除登录用户的角色权限,虽然是同一个登录名,但是毕竟2个SQL Server 上不是同一个人配置的,另外有可能也是SQL Server的问题。关于第3点,我初步用简单的Bulk Insert 在 SSMS 导入文本数据,成功导入。
      

  7.   

    同事帮忙解决的问题。problem: SQLBulkCopy. WriteToServer Catch exception (Login failed for user "***")
    soluction: for the connectionstring we ADD "Persist Security Info=True;"PS: 本地的数据库用户是没有密码的,远程用户设有密码。因此本地不能重现。
      

  8.   

    再次感谢【yupeigu】的意见和建议!
      

  9.   


    Persist Security Info=True就是用了windows集成的验证方式对吧
      

  10.   


    Persist Security Info 参数的作用以下为引用内容:Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",True表示保存,False表示不保存ADO缺省为True
    (ADO.net缺省为False,未测试,根据参考资料上说的)具体可以通过ADO的Connect对象的ConnectString属性进行验证,如下所示(以下在Delphi7中测试通过):----------------------------------------------------------------------------------------------------------数据库连接前ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=false"数据库连接成功后ConnectString="Provider=MSDAORA.1;User ID=yzs;Data Source=ydgl22"----------------------------------------------------------------------------------------------------------数据库连接前ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=true"数据库连接成功后ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=dlyx;Data Source=ydgl22"
      

  11.   


    Persist Security Info 参数的作用以下为引用内容:Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",True表示保存,False表示不保存ADO缺省为True
    (ADO.net缺省为False,未测试,根据参考资料上说的)具体可以通过ADO的Connect对象的ConnectString属性进行验证,如下所示(以下在Delphi7中测试通过):----------------------------------------------------------------------------------------------------------数据库连接前ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=false"数据库连接成功后ConnectString="Provider=MSDAORA.1;User ID=yzs;Data Source=ydgl22"----------------------------------------------------------------------------------------------------------数据库连接前ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=yzs;Data Source=ydgl22;Persist Security Info=true"数据库连接成功后ConnectString="Provider=MSDAORA.1;Password=mypassword;User ID=dlyx;Data Source=ydgl22"
    明白了,谢谢你详细的解释哈。