0

不知道为什么这会失败......我确定这是我的错。任何帮助将不胜感激。

我得到了经典

无法打开登录请求的数据库“Northwind”。登录失败。用户“MyMachine\MyUserName”登录失败。

我可以通过 SQL Server Management Studio 使用 Windows 身份验证登录。

我检查了 SQL Server Management Studio 以确保我的用户有权使用 Northwind 数据库。我还尝试了在 stackoverflow 上发布的对这个问题的大多数其他回复。

这是我的代码:

        SqlConnection dataConnection = new SqlConnection();
        try
        {
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            builder.DataSource = ".\\SQLExpress";
            builder.InitialCatalog = "Northwind";
            builder.IntegratedSecurity = true;
            dataConnection.ConnectionString = builder.ConnectionString;
            dataConnection.Open();

... .

我正在使用 SQL Server 2008 Express

4

3 回答 3

1
  1. 在您的 MS SQL Studio 中,右键单击服务器并转到属性Security并选择SQL Server and Windows Authencation mode

在此处输入图像描述

然后重新启动您的服务器。

  1. 在您的服务器中。转到安全文件夹并创建一个新的登录在此处输入图像描述

  2. 输入用户名和密码。只需取消选中Enforced Security(仅用于测试目的)在此处输入图像描述

  3. 转到用户映射并检查您要在新登录帐户下处理的数据库(NorthWind),然后 db_accessadmin在此处输入图像描述

  4. 点击确定

并尝试您的代码

SqlConnection dataConnection = new SqlConnection();
            try
            {
                SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
                builder.DataSource = "UNKNOWN01-PC\\SQLEXRESS2008R2";
                builder.InitialCatalog = "Northwind";
                //builder.IntegratedSecurity = true;
                builder.UserID = "testlogin";
                builder.Password = "1234";
                dataConnection.ConnectionString = builder.ConnectionString;
                dataConnection.Open();
            }
            catch  (Exception)
            {
                throw;
            }

我怀疑这里的真正问题是,SqlConnectionStringBuilder但我无法解释。我只是一个初学者。:)

于 2012-12-15T16:00:46.570 回答
1

我只是写这个,这样我就不会一次又一次地陷入同一个陷阱......数据库的默认名称是“NORTHWND”而不是“NORTHWIND”这个名称是由windows sql server在导入.bak文件时自动创建的从官方网站。所以这没关系

static string connectionString = "data source=GMDESK028\\SQLSERVER2;initial catalog=NORTHWND;Integrated Security=SSPI;";
于 2014-12-22T15:55:04.313 回答
0

尝试这样做,它总是对我有用,也更简单,因为您可以通过将字符串指定为参数直接从连接字符串创建新的 SQL 连接对象,如下所示:

string connectionString = @"Server=server\instance;Database=Northwind;Integrated Security=True";
SqlConnection dataConnection = new SqlConnection(connectionString);
try
{
dataConnection.Open();
}
catch (sqlexception e)
{
Messagebox.Show("Error");
}
于 2012-12-15T19:10:14.190 回答