我才开始看ASP.NET与数据库的连接,今天一开始就一连遇到三个问题,折腾了一晚上...希望我查到的资料对大家有用。
最初我写的语句是:
//Create the Connection
//SqlConnection conn = new SqlConnection(@"Data Source=(local)/NetSDK; Initial Catalog=Northwind; User ID = sa; password = yourPassword;");
上面这个语句是照书上打的,看来是这个Data Source给我带来的麻烦...上面那个@是用来忽略/的,大家按照自己的喜好看加不加它吧。
我发现最终问题一方面出在了我的ASP.NET与SQL的连接语句上,另一方面出在了SQL的数据库设置上。
我最终修改正确的语句为:
//Create the Connection
//SqlConnection conn = new SqlConnection("Data Source=myComputer//SQLEXPRESS; Initial Catalog=Northwind; User ID = sa; password = yourPassword;");
我出现的三个错误是:
错误一:SQL网络接口, error: 26-定位指定的服务器/实例时出错
错误二:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
错误三:Login failed for user "myComputer/ASPNET".
对于错误一,我参考了以下网页:
http://wenda.tianya.cn/wenda/thread?tid=1c5966b7cc13190e
http://hi.baidu.com/%B0%A2%D7%F3/blog/item/008aeec4a80373ae8226ac85.html
貌似有网友用这个方法解决了问题,不过对于我来说这是仍然没有解决。
不过要特别说明的是:从我的电脑->右键进入“计算机管理”的服务和应用程序->SQL Server 2005配置中的SQL Server 2005网络配置。其中对于TCP/IP和Named Pipes一定都要启用。另外,由于参考的资料上有说到将TCP/IP的IP选项卡里的所有项全部启用,我就照做了。不过问题没有解决。
另外,我需要用到Northwind数据库,而下的SQL Server 2005中没有Northwind和Pubs,大家可以到网上搜SQL2000SampleDb.msi进行下载,把他们恢复到数据库里就行了。我也下载了SQL Server 2005的sample,不过不知道为什么仍然没有Northwind和Pubs,所以用2000的就好了,没有什么区别。
之后,我发现不能在Data Source里用(local)/NetSDK这句话,因此就改成了(local)或(localhost),这是终于没有了可恶的error26,而是错误二error40。
这个错误还是由于Data Source的名称不正确引起的。请大家到企业管理器里去看自己的SQL Server名称,把它填到这里。我记得我以前在学校的机子上有用过localhost的,不过不知道自己的机器上为什么不行,那么把SQL Server的名称填上好了。就这样,错误二解决了。
之后,我遇到了错误三。
我参考了这个网页,太感谢了:)
http://weblogs.asp.net/coltk/archive/2003/07/10/9920.aspx
具体解决方法是:在企业管理器里,为我要访问的Northwind建立一个新用户myComputer/ASPNET,为他设定一个最弱的权限,比如,db_datareader. 注意,我们一般的数据库访问身份验证都是两种方式,使用windows验证和用户名/密码验证,所以你最好这样设定一下。
终于解决了这三个错误,并且成功看到了我要的数据=D。不过,我拿不准这种解决办法是不是能够根除问题,如果以后还遇到类似的问题,会再总结发上来。