大家好,小弟最近在做一款winform的C/S软件。软件已经做好,可在部署在客户端上出现了奇怪的问题。远程连接服务器数据库没有问题,可以查询到数据库的数据(用户登录成功),但往数据库里面写数据时就出问题了(修改密码时怎么也不成功)。后来我把服务器系统给卸了,SQL Server 2005 也重新装了,可问题依然存在。后来我又试了别的,insert ,delete ,update都不成功,但select完全没问题。上述问题在服务器本机上不会出现,服务器本机上运行软件一切正常,服务器与客户端处在同一个可以访问外网的局域网内。我的连接字符串是"Data Source=192.168.1.155;initial catalog=TelRecord;user id=sa;password=123"开发环境是 VS2008 .NET Framework 3.5 + SQL Server 2005。刚才用我以前做的另一个C/S软件在我们的客户机上面跑一点问题没有,可以往服务器数据库写入数据。连接字符串和上面是一样的。唯一不同的是开发环境,那时用的是 VS2005 .Net Framework 2.0,数据库也是 SQL Server 2005。如果不是.Net Framework的问题,有可能数据库权限的问题了,因为另一个数据库可以写入数据,如果真的如我想,那个权限该怎么设置,这方面没什么经验,以前一直都是用sa用户登录从来没考虑过这个问题的。请各位达人帮帮小弟,分数不多,可事情是十万火急的,谢谢。

解决方案 »

  1.   

    漏了说很重要的一点,写入数据库异常的信息是 sql server 2005 error 40,"在建立与远程服务器连接出错, sql server 2005 在默认情况下不允许远程连接"。真的很奇怪,select的时候怎么不会这样,一往里面写就这样子了。
      

  2.   

    就是用ado类里面,没用那些WEB的,只是普通的winform,SqlConnection.SqlCommand
      

  3.   

    访问远程的数据库,的确是不行的,因为这里面有安全的问题,所以sql 2005拒绝这样的访问。
      

  4.   

    建议你在数据库服务器上装上IIS,在上面部署一个webservice,来专门处理数据的增删改查,然后你的客户端来调用webservice就可以啦。
    你这样的做法太简单,也不安全,纯粹是单机的做法。
      

  5.   

    这个问题还真的  没遇到过  想楼上说的  部署一个webservice  这种方法也没用过   来学习了
      

  6.   

    访问数据库的应用程序,如果是单机的,而且数据库在本机上,那么你可以直接使用oledb,odbc,ado.net等来访问数据库。application  <--> db
    而一旦你的数据库在远程,而且访问数据库的用户不止一个的时候,那么你要改变部署架构: 
    application1   
    application2   <--->   webservice  <---> db
    application3 参考一下MSDN,或者在网上找个webservice的例子来看看就知道啦
      

  7.   

    问题终于解决了,刚才设了个断点跟进去,才知道,原来Data Source的值一直为"",数据是从xml文件里读过来的,<ServerAddr>192.168.0.155</ServerAddr>,不知道为什么没传进来,其他的都传进来了。
    也让我学习了,原来就算Data Source = ""也是可以做select操作的....呵呵唉~。谢谢各位了,能告诉我这是为什么呢?