当我尝试使用MSSQL在asp.net中启动Web项目时,似乎无法连接到我的数据库。错误消息是:
A network related or instance specific error occurred while establishing a connection to SQL server...
但是当我尝试运行以前的项目时,它可以运行。但是,当我选择所有程序 - > Microsoft SQL Server 2008 - >配置工具 - > SQL Server配置管理器 - > SQL Server服务。它没有列出所有服务,而是向我显示一个错误,即远程过程调用失败。
我想知道如何修复它,因为它只发生在我的一个项目中。提前谢谢。
我的web.config代码:
修改:
<?xml version="1.0" encoding="UTF-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="GeospatialChallenge2014.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<webServices>
<protocols>
<add name="HttpSoap" />
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>
<compilation debug="true" targetFramework="4.0">
</compilation>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
</system.web>
<connectionStrings>
<add name="GeospatialChallengeConnectionString" connectionString="Data Source=(local);Initial Catalog=SAFETY_AT_SG_DATABASE.mdf;"
providerName="System.Data.SqlClient" />
</connectionStrings>
<applicationSettings>
<GeospatialChallenge2014.Properties.Settings>
<setting name="GeospatialChallenge2014"
serializeAs="String">
<value>http://localhost/SgDataService.asmx</value>
</setting>
</GeospatialChallenge2014.Properties.Settings>
</applicationSettings>
<system.webServer>
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
我的连接字符串:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml;
namespace Geospatial_Challenge_2014
{
/// <summary>
/// Summary description for SgDataService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class SgDataService : System.Web.Services.WebService
{
[WebMethod]
public DataSet GetTrafficByDateTime(string StartDateTime, string EndDateTime)
{
//System.Data.SqlClient.SqlConnection myConn = new System.Data.SqlClient.SqlConnection();
//myConn.ConnectionString = @"Data Source=(local);Initial Catalog=SAFETY_AT_SG_DATABASE.MDF;Integrated Security=True";
SqlConnection myConn = new SqlConnection(ConfigurationManager.ConnectionStrings["GeospatialChallengeConnectionString"].ConnectionString);
SqlDataAdapter myAdapter = new SqlDataAdapter("Select * from dbo.Traffic where Convert(DateTime,([date]+' '+[time])) >= @StartDateTime AND Convert(DateTime,([date]+' '+[time])) <= @EndDateTime;", myConn);
myAdapter.SelectCommand.Parameters.AddWithValue("@StartDateTime", StartDateTime);
myAdapter.SelectCommand.Parameters.AddWithValue("@EndDateTime", EndDateTime);
DataSet ds = new DataSet();
myConn.Open();
myAdapter.Fill(ds, "Traffic");
myConn.Close();
return ds;
}
}
}
答案 0 :(得分:2)
要检查的事项:
确保将数据库引擎配置为接受远程连接 •开始&gt;所有程序&gt; SQL Server 2005&gt;配置工具&gt; SQL Server表面区域配置 •单击“服务和连接的表面区域配置” •选择出现问题的实例&gt;数据库引擎&gt;远程连接 •启用本地和远程连接 •重新启动实例
检查SQL Server服务帐户 •如果您未使用域帐户作为服务帐户(例如,如果您使用的是NETWORK SERVICE),则可能需要先进行此操作才能继续
如果您使用的是命名SQL Server实例,请确保在ASweb P.NET应用程序的连接字符串中使用该实例名称 •通常,指定数据库服务器所需的格式为machinename \ instancename •检查您的连接字符串
4.您可能需要在防火墙上为您正在使用的SQL Server实例和端口创建例外 •开始&gt;运行&gt; FIREWALL.CPL •单击例外选项卡 •添加sqlservr.exe(通常位于C:\ Program Files(x86)\ Microsoft SQL Server \ MSSQL.x \ MSSQL \ Binn)和端口(默认为1433) •检查您的连接字符串
如果您使用的是命名的SQL Server实例,请确保在连接字符串中使用该实例名称
检查SQLBrowser;检查它是否正在运行。您可能还需要在防火墙中为SQLBrowser创建一个例外。
检查您是否已连接到SQL Server。请注意您用于连接的内容:计算机名称,域名或IP地址?检查连接时使用此选项。例如,如果您正在使用myserver •开始&gt;运行&gt; CMD •netstat -ano | findstr 1433 •telnet myserver 1433 •ping -a myserver
检查返回IP地址的端口。
替代: 如果仍然无法建立任何连接,您可能希望在服务器上创建一个SQL帐户,在相关数据库上创建相应的SQL用户,并在Web应用程序中使用此用户名/密码组合。
答案 1 :(得分:0)
这些是摆脱此类错误的可能方法,
以这种方式更改连接字符串, 数据源=(本地)\ SQLEXPRESS;初始目录= SAFETY_AT_SG_DATABASE.MDF;集成安全性=真
尝试删除连接字符串中的.mdf扩展名。只需添加数据库。
您必须授予访问数据库的权限,即在sql server中,Open Security =&gt;登录=&gt;右键单击=&gt;新登录=&gt;给出正确的名称=&gt;然后点击user mapping =&gt;选择您的数据库名称=&gt;给予权限,如执行,选择(2005)或datareader,数据编写器和儿子......
或者打开sql服务配置。在此启用Tcp / Ip协议中,如果它处于停止状态,则启动Sql server Broswer。
可能在某个时候,防火墙会阻止这个sql server浏览器。所以让它禁用并尝试。
以这种方式更改连接字符串,
<connectionStrings>
<add name="GeospatialChallengeConnectionString" connectionString="Data Source=local\SQLEXPRESS;Initial Catalog=SAFETY_AT_SG_DATABASE;Integrated Security = True"
providerName="System.Data.SqlClient" />
答案 2 :(得分:0)
Dude在web.config中定义连接字符串并尝试.Like,
<connectionStrings>
<add name="DBConnection" connectionString="Data Source=yourservername;Initial
Catalog=DBname;User ID=sa;Password=yourpassword"
providerName="System.Data.SqlClient" />
</connectionStrings>
并在您的方法内部将连接字符串调用为
SqlConnection objConnection = new SqlConnection();//sql connection object
objConnection.ConnectionString = ConfigurationManager.ConnectionStrings
["DBConnection"].ConnectionString; //conn string name as in config file
SqlCommand cmd = new SqlCommand("YourStoredprocedure", objConnection);