【问题标题】:sql 2008 server connectionsql 2008服务器连接
【发布时间】:2011-12-26 19:40:44
【问题描述】:

嘿,谁能告诉我这里有什么问题?

SqlConnection sqlConn = new SqlConnection();
sqlConn.ConnectionString = "server=zekyakad-7727\\sqlexpress.master.dbo;database=master;";
sqlConn.Open(); //error line

错误消息:与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)

【问题讨论】:

    标签: c# sql-server-2008 database-connection


    【解决方案1】:

    可以是任意数量的东西:

    • 连接字符串不正确
    • 运行它的计算机和 SQL Server 之间没有网络访问权限
    • 防火墙阻止了特定的所需端口
    • SQL Server 未运行
    • SQL Server 未配置为允许远程连接
    • 您尚未提供任何凭据或设置与 Windows Auth 的连接
    • 用户没有 SQL Server 的登录权限

    所以:

    • 确保您使用的是正确的连接字符串
    • 确保 SQL Server 正在运行
    • 检查网络是否可以连接到 SQL Server
    • 为远程连接配置 SQL Server
    • 确保您提供的凭据有效

    更具体一点:

    您将连接字符串中的Server 设置为:

    zekyakad-7727\\sqlexpress.master.dbo
    

    这看起来不像服务器的名称。这应该是zekyakad-7727

    查看connectionstrings.com,看看有效的连接字符串应该是什么样子。

    【讨论】:

    • @DJKRAZE - 完全正确。我认为使用该连接字符串应该给他一份可能出错的事情的综合清单......
    • 完全同意..但我的眼睛马上就注意到了..你写的完全正确..
    【解决方案2】:

    检查以下事项。

    1. 确保您的数据库引擎配置为接受远程连接 • 开始 > 所有程序 > SQL Server 2005 > 配置工具 > SQL Server 外围应用配置 • 单击服务和连接的外围区域配置 • 选择有问题的实例 > 数据库引擎 > 远程连接 • 启用本地和远程连接 • 重启实例

    2. 检查 SQL Server 服务帐户 • 如果您没有将域帐户用作服务帐户(例如,如果您使用的是 NETWORK SERVICE),您可能需要先切换此帐户,然后再继续

    3. 如果您使用的是命名 SQL Server 实例,请确保您在 ASweb P.NET 应用程序的连接字符串中使用该实例名称 • 通常指定数据库服务器所需的格式是 machinename\instancename • 检查您的连接字符串

    4. 您可能需要在防火墙上为您正在使用的 SQL Server 实例和端口创建一个例外

    • 开始 > 运行 > Firewall.cpl • 单击例外选项卡 • 添加 sqlservr.exe(通常位于 C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Binn)和端口(默认为 1433) • 检查您的连接字符串以及

    <connectionStrings>
    <add name=”SampleConnectionString” connectionString=”Data Source=machinename\in
    stancename;Initial Catalog=AdventureWorks;Integrated Security=SSPI;Min  Pool Size=5;Max     Pool Size=60;Connect Timeout=30″ providerName=”System.Data.SqlClient”/>
    
    </connectionStrings>
    

    5.如果您使用的是命名 SQL Server 实例,请确保您在连接字符串中使用该实例名称

    6.检查SQLBrowser;检查它是否正在运行。您可能还需要在防火墙中为 SQLBrowser 创建一个例外。

    7.检查您是否已连接到 SQL Server。请注意您使用什么来连接:机器名称、域名或 IP 地址?检查连接时使用它。例如,如果您使用 myserver • 开始 > 运行 > cmd •netstat -ano|发现str 1433 •远程登录我的服务器 1433 •ping -a 我的服务器

    检查正在返回的 IP 地址是哪些端口。

    替代方案: 如果您仍然无法获得任何连接,您可能需要在服务器上创建一个 SQL 帐户,在相关数据库上创建一个相应的 SQL 用户,然后在您的 Web 应用程序中使用此用户名/密码组合。

    【讨论】:

      【解决方案3】:

      建议您不要以这种方式输入连接字符串,而是通过以下方式使用SqlConnectionStringBuilder。这不太容易出错。

      SqlConnection dataConnection = new SqlConnection();
      SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
      builder.DataSource = ".\\SQLExpress"; // Your Datasource
      builder.InitialCatalog = "Northwind"; // Database Name
      builder.IntegratedSecurity = true;
      dataConnection.ConnectionString = builder.ConnectionString;
      dataConnection.Open();
      

      【讨论】:

      • 是的,他可以做到,但他似乎在控制台应用程序中工作,这就是我没有提到的原因:-)
      • @PankajUpadhyay - 控制台应用程序可以有 .config 文件。
      • @Oded 嗯....我总是使用控制台应用程序来学习和测试场景,因此从不需要使用配置文件。 :-)
      • 根据他们提供的信息,无法知道它是否是控制台应用程序。
      • @AshBurlaczenko,你是对的。我也不知道为什么我们要讨论这个与 OP 的问题无关的问题... :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2012-07-21
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多