Announcement

Collapse
No announcement yet.

Connection String

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Connection String

    Hallo,
    ich habe folgendes Problem. Wenn ich im Visual WebDeveloper eine Datenbank erstelle und dann z.B. eine Tabelle in den Designer ziehe, erhalte ich ja den Connectionstring. Soweit so gut. Lokal alles super.
    Wenn ich jetzt aber über die Standard website im IIS diese Seite veröffentliche kracht das ganze.
    Zuerst habe ich herausgefunden, dass es schonmal relativ sinnfrei ist die UserInsance auf True zu lassen. Aber wie muss ich jetzt mit dem AttachDbFilename etc verfahren??


    <add name="TestConnectionString1" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Test.mdf;Integrated Security=True;User Instance=False" providerName="System.Data.SqlClient"/>

    In diesem Zusammenhang hatte ich schon einen Beitrag von Herrn Kosch gefunden. Allerdings leider nicht ganz kappiert.

    Danke für eure Hilfe!

  • #2
    Hallo,

    ..connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Test.mdf;..
    Über den Eintrag AttachDbFilename erhält der SQL Server Express den Auftrag, beim Verbindungsaufbau automatisch die angegebene Datenbankdatei (und damit zwangsläufig auch die dazugehörende Log-Datei) einzuhängen. Wenn aber für AttachDbFilename ein fester Pfadname verwendet wird, kann die Anwendung nicht mehr so ohne weiteres in ein anderes Verzeichnis verschoben werden. Aus diesem Grund stellt .NET das spezielle Schlüsselwort |DataDirectory| zur Verfügung, um zur Laufzeit den tatsächlichen kompletten Pfadnamen des App_Data-Verzeichnisses einzulesen.

    Wenn ich jetzt aber über die Standard website im IIS diese Seite veröffentliche kracht das ganze.
    Das liegt darin, das in der Verbindungszeichenfolge die Anweisung User Instance=False verwendet wird.

    Normalerweise sind die System-Tabellen auf einem Rechner nur ein einziges Mal vorhanden, da dort globale Konfigurationsdaten untergebracht sind. Allerdings unterstützt der SQL Server 2005 Express den Sonderfall der so genannten User Instance, bei der jede Instanz vollständigen von allen anderen auf dem gleichen Rechner ausgeführten Instanzen abgeschottet werden muss. Wenn in der Verbindungszeichenfolge die Option User Instance= True verwendet wird, kopiert der SQL Server 2005 Express automatisch die System-Datenbanken in das Unterverzeichnis Microsoft\Microsoft SQL Server Data\SQLEXPRESS des von ASP.NET verwendeten Kontos (siehe Abbildung). Außerdem wird die Prozessinstanz unter dem Benutzerkonto von ASPNET ausgeführt. Nur dann reichen die Rechte aus, um über AttachDbFilename eine Datenbank einzuhängen.

    Wenn keine User Instance verwendet werden soll, muss ein DBA die Datenbank permanent in die SQL Server-Instanz einhängen. In der Verbindungszeichenfolge darf dann AttachDbFilename nicht auftauchen!
    Attached Files

    Comment


    • #3
      Ich bedanke mich recht herzlich für die ausführliche Antwort!! Jetzt habe ich die Materie besser im Blick!!
      Gruß,
      Matthias

      Comment


      • #4
        Achso, aeine Frage hätte ich noch und zwar:
        Ich hatte das bisher so verstanden, dass durch USer INstance = True
        nicht nur die Systemdatenbanken kopiert werden, sondern auch die anderen Tabellen, z.B. die wo man Kunden etc drin hat. Ist das richtig so?
        Und das wäre bei Anwendungen ja nicht gerade hilfreich...

        Comment

        Working...
        X