ASP.net 连接sql 2008 的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.net 连接sql 2008 的问题相关的知识,希望对你有一定的参考价值。
刚装上vs2010 + sql 2008的管理软件
在配置一个网站的时候,总是出现这种错误
--------------------------------------------------------------
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 无法打开到 SQL Server 的连接)
源错误:
行 78: catch(Exception exc)
行 79:
行 80: throw(exc);
行 81:
行 82: finally
…………
-------------------------------------------------------
谁能帮忙解决的,我再追加悬赏分,QQ:8823-9166
配置工具->Sql Server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Database Engine节点,先择“远程连接”,接下建议选择“同时使用TCP/IP和named pipes”,确定后重启数据库服务就可以了。
2.登陆设置改为:Sql Server 和 Windows 身份验证模式,具体设置如下:
SQL Server Management Studio管理器->Windows 身份验证连接服务器->对象资源管理器中选择你的数据服务器->右键->属性->安全性->Sql Server 和 Windows 身份验证模式选中。
3.设置一个Sql Server方式的用户名和密码,具体设置如下:
(1)SQL Server Management Studio管理器->Windows 身份验证连接服务器->对象资源管理器中选择你的数据服务器->展开服务器上的“安全性”->登陆名->在sa帐号上点右键->“选择页”选择常规->更改sa登陆帐号的密码。这样就设置了一个用户名为sa,密码为:sa123456的用户。
(2)“选择页”选择状态->登陆修改为启用
4.数据库连接字符串
数据库连接字符串有好几种,相信你自己也见过,都被搞晕了
Data Server=.\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=服务器名\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=localhost\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=.;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=服务器名;Initial Catalog=Northwind;User ID=sa;Password=sa123456
……
到底那种正确?这跟数据库版本有关系,如果是Sql Server 2005 Express版本,则必须要有“\SQLEXPRESS”。而且如果这个字符串是定义为一个变量的时候,VS2005还会在“\”的下面加个红色的波浪线提示你“\S是无法识别的转义序列”,因此如果字符串是定义为一个变量的时候应该写成Server=.\\SQLEXPRESS
5.注册Sql Server数据库
在路径“C:\Windows\Microsoft.NET\Framework\v2.0.50727”下运行“ASPNET_REGSQL”指令,就会出现ASP.NET SQL Server Setup Wizard向导,连续按下两个下一步后就会出现Sql Server注册界面,填入你要注册的数据库参数就注册好了。注册完后会在你的数据库里多几个表
5.设置数据库连接字符串
打开IIS->在默认网站或是网站所在的虚拟目录点击右键选择属性->选择ASP.NET选项卡->编辑配置->在“常规”页签编辑“LocalSqlServer”数据库连接字符串:
Data Server=.\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
6.设置web.config文件
在web.config文件添加如下程序:
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456" providerName="System.Data.SqlClient"/>
</connectionStrings>
这样便大功告成了。下面来测试
1.宽松的连接测试
宽松的连接测试使用SqlDataSource
VS服务器资源管理器选中数据库点击右键->选择修改连接->填入服务器名->使用Sql Server身份验证填入用户名sa及密码sa123456->选择或输入一个数据库名:Northwind->点击测试连接
宽松的连接测试连接成功并不能说明数据库就连接OK了,一开始我就是挂在这里,宽松的连接测试测试连接成功,可是始终无法读出数据库的内容到网页里头。
2.严谨的连接测试
在VS里选择网站菜单->ASP.NET配置进入ASP.NET网站管理工具->选择提供程序->点击AspNetSqlProvider的测试,若测试成功,说明数据库设置完全正确,否则得从头来过好好查查问题在哪里。
上面这段文字是在网上找的,说得很详细,所以摘抄下来供楼主尝试。不过我觉得最根本的方法还是debug一下程序,看是哪一条语句或者方法导致发生错误并抛出异常。找错误的方法就不说了,就是一句一句的按F9加断点,按F10跟踪调试。希望有帮助。 参考技术A 你的sql2008没有启用远程访问本回答被提问者采纳
ASP.NET Core SQL 连接超时
【中文标题】ASP.NET Core SQL 连接超时【英文标题】:ASP.NET Core SQL Connection TImeout 【发布时间】:2016-09-12 17:47:35 【问题描述】:我一直致力于将 ASP.NET 5 RC1 应用程序升级到 ASP.NET Core 1。我通过替换包(AspNet 到 AspNetCore)并从 EF7 更改为 EF Core(Microsoft.Data.Entity)成功升级了它到 Microsoft.EntityFrameworkCore)。
我遇到的问题是连接超时已过期的间歇性 SqlException。
这里是完整的例外:
System.Data.SqlClient.SqlException occurred.
Class=11 ErrorCode=-2146232060 HResult=-2146232060 LineNumber=0
**Message=Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=924; handshake=6;**
Number=-2
Procedure=""
Server=(localdb)\mssqllocaldb
Source=.Net SqlClient Data Provider
State=0
StackTrace:
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
我试过像这样增加命令超时:
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
this.Database.SetCommandTimeout(120);
该行抛出异常,但是当我将其注释掉时,它会在其他地方发生,这使我相信它在第一次访问数据库时发生。
app.ApplicationServices.GetService<ApplicationDbContext>().Database.Migrate();
【问题讨论】:
现在没有问题还是什么?在此之后this.Database.SetCommandTimeout(120);
添加超时后问题仍然存在。
【参考方案1】:
您的问题与与服务器建立连接所需的时间有关。更改CommandTimeout
值(允许命令执行的时间量)不会对此产生任何影响。您需要考虑增加 connection timeout 值,这是通过连接字符串实现的:
Server=(localdb)\mssqllocaldb;Database=yourDb;Trusted_connection=true;connect timeout=100;
【讨论】:
你知道为什么我升级到 Core 1.0 之后才遇到这个问题吗? 它与实体框架的版本无关。该问题纯粹与 SQL Server 的响应能力有关。 LocalDb 按需启动。我不知道哪些因素会影响 LocalDb 准备就绪所需的时间,但您使用的 EF 或 .NET 版本极不可能是其中之一。以上是关于ASP.net 连接sql 2008 的问题的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 和 SQL Server 2008 中的错误“用户 'NT AUTHORITY\IUSR' 登录失败”
为 asp.net 应用程序连接 sql server(Windows 身份验证与 SQL Server 身份验证)的最佳方式
使用前端 ASP.net 从 Access db 迁移到 SQL Server 2008