C#sqlConnection身份验证异常

C#sqlConnection身份验证异常,c#,sql,sql-server,visual-studio-2012,C#,Sql,Sql Server,Visual Studio 2012,正在编写一个C#应用程序,用于查询SQL Server 2008 R2数据库实例。我的代码(连接字符串带有mods)如下所示: using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Data; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls;

正在编写一个C#应用程序,用于查询SQL Server 2008 R2数据库实例。我的代码(连接字符串带有mods)如下所示:

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace MosaiqToCTWorklist
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        // Establish a connection string
        string connectionString = "Data Source=IPADDRESS;Password=PASSWORD;User ID=USERID;Initial Catalog=dbName";
        SqlConnection dbConnection;  

        public MainWindow()
        {
            InitializeComponent();
            dbConnection = new SqlConnection(connectionString);
            Test();        
        }

        private void Test()
        {
            dbConnection.Open();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Data.SqlClient;
使用系统数据;
使用System.Linq;
使用系统文本;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用System.Windows.Navigation;
使用System.Windows.Shapes;
命名空间MosaiqToCTWorklist
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
//建立一个连接字符串
string connectionString=“数据源=IPADDRESS;密码=密码;用户ID=用户ID;初始目录=dbName”;
SqlConnection-dbConnection;
公共主窗口()
{
初始化组件();
dbConnection=新的SqlConnection(connectionString);
Test();
}
专用无效测试()
{
dbConnection.Open();
}
}
}
这是我第一次连接到数据库,并利用项目>添加新数据源向导生成
connectionString
中定义的连接字符串。
Test()
方法仅用于调试目的

我得到以下InnerException:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接)“}

我不明白为什么我可以使用源代码向导连接到此数据库,但在我编写代码时失败了。我找不到任何如此具体的内容,我希望能够进一步了解Visual Studio 2012在幕后的工作。谢谢


您遇到的错误与代码无关,它是由连接字符串中的参数引起的。它找不到服务器

要连接到SQL Server,有时仅指定IP地址或服务器名称还不够,如果端口不是默认端口(通常为1433),则需要指定端口和实例名称。例如,默认情况下使用SQL Server Express创建名为“SQLEXPRESS”的实例“,因此为了能够连接到它,您需要将它包括在服务器名称/IP地址中:

string connectionString = "Data Source=IpAddress\InstanceName,Port; Password=PWD; User ID=USERID; Initial Catalog=dbName";
看看这里:这里都有解释。 希望这有帮助

ConnectionString=@“数据源=数据库源;密码=密码;用户ID=用户名;初始目录=数据库名”

尝试上面提到的连接字符串。
无需提供端口信息即可连接。

您有Sql Service Management Studio吗?如果是这样的话,打开它,试着用同样的信条连接。确保你的密码中没有分号或未替换的反斜杠,或者,您发送到SQL Server的密码将与您认为发送的密码不同。@kmacdonald:我之前确实验证过这些凭据,并且它们已被接受。@dodexahedron:密码在等号和结尾分号之间是干净的。我对负面评分持开放态度,并正在努力改进我发布的问题,然而,我要求留下客观的评论,说明原因。谢谢。我很感激这个链接,它实际上是我用来帮助我完成第一轮的。实例名称应该由Initial Catalog=dbName处理。无论是否指定数据库(如果未使用默认数据库),都需要指定实例名称。可以在同一台计算机上运行多个SQL Server实例,并且它们可以使用相同的数据库名称。最后,我确实返回并在实例中使用“\\”在IP地址和实例名称之间添加了实例。然而,同样的问题。尽管如此,还是要谢谢你。站点指示不支持转义字符。我将连接字符串的开头从“\\”改为@。仍然不走运,发布了一张完全错误的照片。你有没有可能分享你当前的连接字符串?(只需删除用户和pwd)。在字符串中使用@或“\\”应该不会有问题,两者的作用相同。只是想确保我不需要有凭据才能登录到此db实例所在的服务器?sqlConnection和connectionString应该只是直接连接到所讨论的db,不是吗?访问数据库和服务器的凭据不同。