2016-12-06 2 views
0

Können Sie mir helfen? Ich brauche eine Verbindung zu meiner lokalen Datenbank auf SqlServer 2016, aber wenn ich versuche, die Verbindung zu öffnen, habe ich diesen Fehler bekommen. Ich versuche nicht, andere Möglichkeiten, um sich einzuloggen, weil ich Passwort erinnere mich nicht (ich benutze Windows Auth immer.)Local SqlServer 2016 - Anmeldung fehlgeschlagen

Zusätzliche Informationen: Datenbank kann nicht geöffnet „my_project“ angefordert von der Anmeldung. Die Anmeldung ist fehlgeschlagen.

Fehler bei der Anmeldung für den Benutzer 'DESKTOP-C448DNE \ Denis'.

Hier ist mein C# -Code, die ich benutze:

public class DbHelper 
{ 
    public SqlConnection Connection { get; private set; } 
    public string Language { get; set; } 

    public DbHelper() 
    { 
     Connection = new SqlConnection(); 
     Language = "en"; 
    } 

    public bool Connect(string conString) 
    { 
     if (Connection.State != ConnectionState.Open) 
     { 
      Connection.ConnectionString = conString; 
      Connection.Open(); 
     } 
     return true; 
    } 

    public bool Connect() 
    { 
     string connString = "Data Source=(localdb)\\MSSQLLocalDB; Initial Catalog = My_Project; Integrated Security=true;"; 

     return Connect(connString); 
    } 

    public void Close() 
    { 
     Connection.Close(); 
    } 

    public int ExecuteNonQuery(SqlCommand sqlCommand) 
    { 
     int rowNumber = 0; 
     try 
     { 
      rowNumber = sqlCommand.ExecuteNonQuery(); 
     } 
     catch (Exception e) 
     { 
      throw e; 
     } 
     return rowNumber; 
    } 
} 

Und hier verwende ich diese Klasse:

... 
    private DbHelper _db; 

    public SqlEmployeeMapper() 
    { 
     _db = new DbHelper(); 
    } 

    public int Create(Employee entity) 
    { 
     var conn = _db.Connect(); 

     string queryString = "insert into \"employees\" (first_name, last_name, email, phone_number, password, city, address, holiday, role_id, departmant_id)" + 
      "values(@first_name, @last_name, @email, @phone_number, @password, @city, @address, @holiday, @role_id, @departmant_id);"; 


     SqlCommand command = new SqlCommand(queryString); 
     PrepareCommand(command, entity); 
     var id = _db.ExecuteNonQuery(command); 

     _db.Close(); 

     return id; 
    } 
... 

EDIT: ich offen Server-Explorer in VS2015 versuchen und klicken Sie auf „Hinzufügen Verbindung“... ich betrete‚(localdb) \ MSSQLLocalDB‘als Servername, und wenn ich Drop-Down-Liste mit Datenbanken öffnen, sehen nicht meine Datenbanken

+0

Haben Sie SSMS installiert? Wenn ja, kannst du dich damit verbinden? –

+0

Klingt wie Sie ein Login für WIndows – stuartd

+0

@ Ziel-Datenkonto erstellen müssen ja SSMS funktioniert –

Antwort

0

Verwenden Sie Visual Studio? Wenn ja, können Sie im Server-Explorer eine Verbindung erstellen, die sich erfolgreich authentifiziert?

+0

Dies ist keine Antwort auf die Frage und sollte ein Kommentar sein – stuartd

+0

check my post update pls –

+0

Ihre Verbindungszeichenfolge verwendet "(localdb)", die eine Localdb-Installation verwendet. Wenn SQL Server 2016 mit Ihrer Ziel-DB installiert ist, finden Sie sie nicht mit (localdb). Siehe https://blogs.msdn.microsoft.com/sqlexpress/2011/10/28/localdb-where-is-my-database/. Angenommen, Ihre SQL 2016-Instanz heißt MSSQLLocalDB, versuchen Sie, direkt ohne die Datei (localdb) eine Verbindung zu ihr herzustellen. – user3802434

0

Instanzen von SQL Local Db haben einen Namen und eine Instanz namens pipe. Wenn Sie .Net unter 4.0.2 verwenden, müssen Sie sich über die Named Pipe verbinden. Vom docs on MSDN:

Wenn Ihre Anwendung eine Version von .NET vor 4.0.2 verwenden, müssen Sie direkt auf die Named Pipe des LocalDB verbinden. Der Name der Instanz-Pipe-Name ist die Named Pipe, die die Instanz von LocalDB überwacht. Der Teil des Instance-Pipe-Namens nach LOCALDB # ändert sich jedes Mal, wenn die Instanz von LocalDB gestartet wird. Geben Sie im Feld Servername des Dialogfelds Mit Datenbankmodul verbinden den Instance-Pipe-Namen ein, um eine Verbindung mit der Instanz von LocalDB mithilfe von SQL Server Management Studio herzustellen. Von Ihrem benutzerdefinierten Programm aus können Sie eine Verbindung zur Instanz von LocalDB herstellen, indem Sie eine Verbindungszeichenfolge verwenden, die SqlConnection ähnelt. Conn = new SqlConnection (@ "Server = np: \. \ Pipe \ LOCALDB # F365A78E \ tsql \ query");

Im Gegensatz zum Namen ändert sich die benannte Pipe bei jedem Neustart der Instanz. Eine Möglichkeit, die aktuelle benannte Pipe zu finden, ist über die Befehlszeile.

SQLLocalDb i MSSQLLocalDb 

Wenn die Instanz gestoppt wurde, müssen Sie sie starten. Starten der Instanz wird die Named Pipe generieren. Fünf Minuten oder länger ohne Verbindung wird die Instanz stoppen.

SQLLocalDb s MSSQLLcoalDb 

Für mehr auf der Kommandozeile nehmen einen Blick auf die docs, wieder von MSDN genommen.

Ich bin mir nicht sicher, ob die großen Veränderungen in SS 2016 SP1 die Notwendigkeit entfernen über Named Pipe zu verbinden.

+0

Ich benutze .net 4.5: / –

Verwandte Themen