Laden...

Keine Verbindung zur lokalen SQL Datenbankdatei

Erstellt von abc89 vor 10 Jahren Letzter Beitrag vor 10 Jahren 6.043 Views
A
abc89 Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren
Keine Verbindung zur lokalen SQL Datenbankdatei

verwendetes Datenbanksystem: mit Visual Studio 2012 Express erstellte Datenbankdatei (Dienstbasierte Datenbank)

Hallo zusammen,
ich habe eine Testanwendung (Windows Forms) geschrieben in C# mit dem Visual Studio 2012 (Desktop) Express. In dem Projekt habe ich eine "Dienstbasierte Datenbank" hinzugefügt. Auf meinem Entiwkclungsrechner funktioniert der Datenzugriff ohne Probleme.

Ich habe das Programm mit der Datenbank im Releasemodus kompiliert und wollte es auf einem Windows 7 Home Premium Rechner ausführen.

Das Programm startet aber die Verbindung kann nicht zur Datenbankdatei hergestellt werden (Fehlermeldung: > Fehlermeldung:

"Es kann keine Verbindung zur Datenbank hergestellt werden" ). Die Datenbank ist vorhanden und hat keine Anmeldeinformationen.

Benötige ich für dieses Vorhanden einen Treiber auf dem Rechner, auf dem ich Probleme habe, für den Datenbankzugriff?

Mit freundlichen Grüßen
abc89

6.911 Beiträge seit 2009
vor 10 Jahren

Hallo abc89,

Benötige ich für dieses Vorhanden einen Treiber auf dem Rechner, auf dem ich Probleme habe, für den Datenbankzugriff?

Ja den SQL Server (Express).

Es gibt aber auch rein lokale Alternativen, bei denen nichts installiert werden muss, wie z.B. SQL Compact. Im Forum haben wir das bereits einige diskutiert. Bitte benutze die Forensuche und poste die besten Treffer hier. Danke.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

3.825 Beiträge seit 2006
vor 10 Jahren

Siehe auch :

http://www.seven-c.de/files/datenbankenhowto.htm

Wie ist Dein Connectionstring ? Sicher dass der richtig ist ?

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

A
abc89 Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren

Vielen Dank für die Infos.

Ich habe mich für die SQL Compact Variante entschieden. Aus Gewusst wie: Bereitstellen einer SQL Server Compact 4.0-Datenbank mit einer Anwendung habe ich mir die benötigten Infos geholt. Die Punkte unter "Private dateibasierte Bereitstellung" habe ich alle ausgeführt. Beim Starten auf einem anderen Rechner kommt jetzt die Fehlermeldung:

Fehlermeldung:
Der angegebene Speicheranbieter kann nicht in der Konfiguration gefunden werden oder ist ungültig. ---> System.ArgumentException: Der angeforderte .Net Framework-Datenprovider kann nicht gefunden werden. Er ist ggf. nicht installiert.

Der Connectionstring ist:

<add name="DatabaseEntities" connectionString="metadata=res://*/Libary.Entities.Datamodel.csdl|res://*/Libary.Entities.Datamodel.ssdl|res://*/Libary.Entities.Datamodel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;data source=|DataDirectory|\ControlContainer\Database\Database.sdf&quot;" providerName="System.Data.EntityClient" />

Da ich die Dlls mit kopiere, dürfte ich die SQL Compact Runtime ja nicht brauchen?!

Grüße

PS:
Die komplette App.Config sieht folgendermaßen aus:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
  <connectionStrings>
    <add name="DatabaseEntities" connectionString="metadata=res://*/Libary.Entities.Datamodel.csdl|res://*/Libary.Entities.Datamodel.ssdl|res://*/Libary.Entities.Datamodel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;data source=|DataDirectory|\ControlContainer\Database\Database.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>
A
abc89 Themenstarter:in
7 Beiträge seit 2013
vor 10 Jahren

Lösung:

Ebenfalls die Dll System.Data.SqlServerCe.Entity.dll mit lokaler Kopie = true einbinden und in der App.Config folgendes einfügen:

  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0"></remove>
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>

Danke!

1.552 Beiträge seit 2010
vor 10 Jahren

Hallo abc89,

es gibt auch die Möglichkeit des LocalDB. Ich verwende dies auch in meinen Projekten als lokale Datenbank, da diese gegenüber SQLCe doch etwas mächtiger ist. D.h. LocalDb hat die Funktionalität eines SQL-Server Express.

Gruß,
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

F
10.010 Beiträge seit 2004
vor 10 Jahren

Nur das LocalDB genauso wie Sql Express installiert werden muss, eine EmbeddedDB wie z.b. SQLite nicht.

1.552 Beiträge seit 2010
vor 10 Jahren

Ja, das stimmt. Auf den Entwicklerrechner wird es mit VS2012 mitinstalliert. Bei Kunden kann man, wenn man mit ClickOnce arbeitet bei der Installation auswählen dass LocalDB mit installiert wird. (auf jeden Fall glaube ich das, müsste es am Abend testen)

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp