无法打开数据库

时间:2012-12-15 15:57:52

标签: c# .net sql-server sql-server-express sql-server-2008-express

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

我正在获得经典

  

无法打开登录请求的数据库“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

3 个答案:

答案 0 :(得分:1)

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

    然后重新启动服务器。

      您服务器中的
    1. 。转到安全性文件夹并创建新的登录enter image description here

    2. 输入用户名和密码。只需取消选中Enforced Security(仅用于测试目的)enter image description here

    3. 转到用户映射并检查要在新登录帐户下处理的数据库(NorthWind),然后检查db_accessadmin enter image description here

    4. 点击OK

    5. 并尝试使用您的代码

      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,但我无法解释。我只是一个初学者。 :)

答案 1 :(得分:1)

我只是写这个,以便我不会一次又一次陷入同一个陷阱......数据库的默认名称是" NORTHWND"而不是" NORTHWIND" 该名称由Windows sql server自动创建,同时从官方站点导入.bak文件。 所以这没关系

static string connectionString = "data source=GMDESK028\\SQLSERVER2;initial catalog=NORTHWND;Integrated Security=SSPI;";

答案 2 :(得分: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");
}