C#程序连接MSSQL可以 Delete,但是无法insert 这样,你可以用sql profiler 监控一下,看insert 的时候,语句是怎么样的,报了什么错误。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 刚才开了 sql profiler 捕捉了一下, 不同的就是正常的电脑多了以下这种事务:本地(正常): BatchStarting, batchCompleted远程(异常): 无 哪里设置 bulk copy ? 你说是在c#中设置bulk copy? 程序中有一步是 BulkCopy最惨就是代码里面没有对这个捕捉异常,直接 return false 在 SSMS 里面 Bulk Insert 没有问题。那边没有 debug 环境,只有在代码里 catch 一下了。等同事出版本明天再查 首先谢谢 【yupeigu】一直关注本帖。以下是我个人的初步结论:1.程序版本应该没有问题,问题发生的模块相对长时间没有发动了,而且就在今天早上,客服也更新了版本,与我所用的版本(非 debug 环境)基本没有什么区别。2.可以排除本数据库的配置问题,因为是直接 Restore 最新的backup.本数据库的所有配置应该是一致的。3.不能排除登录用户的角色权限,虽然是同一个登录名,但是毕竟2个SQL Server 上不是同一个人配置的,另外有可能也是SQL Server的问题。关于第3点,我初步用简单的Bulk Insert 在 SSMS 导入文本数据,成功导入。 同事帮忙解决的问题。problem: SQLBulkCopy. WriteToServer Catch exception (Login failed for user "***")soluction: for the connectionstring we ADD "Persist Security Info=True;"PS: 本地的数据库用户是没有密码的,远程用户设有密码。因此本地不能重现。 再次感谢【yupeigu】的意见和建议! Persist Security Info=True就是用了windows集成的验证方式对吧 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" 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"明白了,谢谢你详细的解释哈。 请各位看一下这个sum语法对不对? 谁推荐一些书来学习啊 高分求教,顶者有分~ 100分在线 求一个存储过程改造 SQL 默认值不起作用? JDBC查询SQLServer2008速度很慢 如何把数据插入到同一行中? BCP使用問題 sql server数据库文件应该如何备份,是不是非要.ldf文件? 求小触发修改 请问用什么软件能打开sdf后缀的文件,谢谢! SQL SERVER 间隔固定时间执行update
本地(正常): BatchStarting, batchCompleted
远程(异常): 无
你说是在c#中设置bulk copy?
最惨就是代码里面没有对这个捕捉异常,直接 return false
那边没有 debug 环境,只有在代码里 catch 一下了。
等同事出版本明天再查
首先谢谢 【yupeigu】一直关注本帖。
以下是我个人的初步结论:1.程序版本应该没有问题,问题发生的模块相对长时间没有发动了,而且就在今天早上,客服也更新了版本,与我所用的版本(非 debug 环境)基本没有什么区别。
2.可以排除本数据库的配置问题,因为是直接 Restore 最新的backup.本数据库的所有配置应该是一致的。
3.不能排除登录用户的角色权限,虽然是同一个登录名,但是毕竟2个SQL Server 上不是同一个人配置的,另外有可能也是SQL Server的问题。关于第3点,我初步用简单的Bulk Insert 在 SSMS 导入文本数据,成功导入。
soluction: for the connectionstring we ADD "Persist Security Info=True;"PS: 本地的数据库用户是没有密码的,远程用户设有密码。因此本地不能重现。
Persist Security Info=True就是用了windows集成的验证方式对吧
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"
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"
明白了,谢谢你详细的解释哈。