none
Herstellen einer Verbindung zu SQL Server 2014 mit C# klappt nicht RRS feed

  • Frage

  • Guten Tag,

    nachdem ich von SQL-Server2008 Express auf SQL-Server 2014 umgestiegen bin, kann ich mit meinem C#-Code keine Verbindung mehr zum Server 2014 aufbauen, um eine neue Datenbank zu erstellen, was beim 2008-Expressserver noch wunderbar funktionierte.

    - eine Anmeldung mit Hilfe der Management-Konsole funktioniert zu Server 2014.

    - Anmeldung ist: Windows-Authentifizierung

    - Serverrollen: dbcreator, public, sysadmin

    - Port 1433 in der Windows-Firewall ist freigegeben

    - TCP/IP ist aktiviert

    Was habe ich übersehen?

    Gruß Jürgen

    Mittwoch, 2. September 2015 06:22

Antworten

  • Hi Jürgen,
    MSSQLServer ist eigentlich die unbenannte Instanz. Diese ist als DataSource nicht anzugeben. Es reicht "." oder "<servername ohne Instanzname>". Das heißt, Dein ConnectionString für die Neuanlage einer Datenbank sollte so aussehen:

    connectionString = @"Data Source=.;Initial Catalog=master;Integrated Security=True;Pooling=False";


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert Jürgen Sch Mittwoch, 2. September 2015 08:11
    Mittwoch, 2. September 2015 08:03

Alle Antworten

  • Hallo Jürgen,

    wie genau erstellst Du die Datenbank und welche Fehlermeldung gibt es dabei?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 2. September 2015 06:38
  • Hallo Olaf,

    zunächst prüfe ich, ob die neu zu erstellende DB schon vorhanden ist mit:

    connectionString = @"Data Source=.\SQLEXPRESSR8;Initial Catalog="+ SysDbName + ";Integrated Security=True;Pooling=False";

    try

    {

    using(conn = newSqlConnection(connectionString))

    {

    conn.Open();

    returntrue;

    }

    }

    catch(Exceptionex)

    {

    returnfalse;

    }

    Das dauert schon sehr lange!!! Das war bei Express2008 sofort da!

    Falls Datenbank nicht existiert, wird diese erstellt mit:

    connectionString = @"Data Source=.\SQLEXPRESSR8;Initial Catalog=master;Integrated Security=True;Pooling=False";

    sql = "CREATE Database "+ SysDbName;

    try

    {

    using(conn = newSqlConnection(connectionString))

    {

    conn.Open();

    using(cmd = newSqlCommand(sql, conn))

    {

    cmd.ExecuteNonQuery();

    }

    }

    MessageBox.Show("Verfahrensdatenbank '"+ SysDbName + "' wurde erfolgreich erstellt.", "Katalog-Datenbank erstellen...", MessageBoxButtons.OK, MessageBoxIcon.Information);

    }

    catch(Exceptionex)

    {

    MessageBox.Show("Fehler bei Erstellung der Datenbank '"+ SysDbName + "'!"+

    "\n"+ ex.ToString(), "Katalog-Datenbank erstellen...", MessageBoxButtons.OK, MessageBoxIcon.Error);

    }

    Es erscheint der Fehler:

    "System.Data.SqlClient.SqlException (0x80131904): Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden..."

    Mittwoch, 2. September 2015 07:16
  • Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden..."

    Hallo Jürgen,

    das "lange dauern" sind mit Sicherheit 15 Sekunden und das ist der Standard Connection Timeout und der Fehlermeldung nach, ist der SQL Server nicht erreichbar.

    Im Connection String steht ".\SQLEXPRESSR8", also ein lokaler SQL Server? Hast Du geprüft, ob der SQL Server Dienst läuft? Kannst Du Dich per SSMS an den SQL Server anmelden? Wie hast Du die Migration auf die neue SQL Server Version durchgeführt, als In-Place oder Neuinstallation?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 2. September 2015 07:27
  • Hallo Olaf,

    ich habe den SQL-Server 2014 als lokalen Testserver NEU installiert und eingerichtet. Der Servername heißt jetzt natürlich anders:

    Data Source=.\MSSQLSERVER

    In der Konfigurationskonsole habe ich den SQL-Serverdienst nochmals gestartet.

    Per SSMS klappt die Anmeldung einwandfrei!!! Das ist ja das Komische??!!

    Mittwoch, 2. September 2015 07:44
  • Hi Jürgen,
    MSSQLServer ist eigentlich die unbenannte Instanz. Diese ist als DataSource nicht anzugeben. Es reicht "." oder "<servername ohne Instanzname>". Das heißt, Dein ConnectionString für die Neuanlage einer Datenbank sollte so aussehen:

    connectionString = @"Data Source=.;Initial Catalog=master;Integrated Security=True;Pooling=False";


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert Jürgen Sch Mittwoch, 2. September 2015 08:11
    Mittwoch, 2. September 2015 08:03
  • In der Dienstverwaltung steht zwar "SQL Server (MSSQLSERVER)", das ist aber nicht der Instanzenname; das ist ein Standard (unbenannte) Instanz und da musst Du den Instanzennamen weg lassen; also nur den Punkt für lokal angeben =>

    Data Source=.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 2. September 2015 08:09
  • Hallo Peter,

    Danke, genau das war es. Jetzt flupps.

    Gruß Jürgen

    Mittwoch, 2. September 2015 08:11