Laden...

Projekt veröffentlichen mit automatisch erstellter Datenbank: Exe-Datei funktioniert nicht

Erstellt von rallepralle vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.276 Views
R
rallepralle Themenstarter:in
142 Beiträge seit 2008
vor 13 Jahren
Projekt veröffentlichen mit automatisch erstellter Datenbank: Exe-Datei funktioniert nicht

Hi,

ich wollte im MS VS2008 eine EXE-Datei für mein C#-Programm, welches eine Datenbank braucht, erstellen: Erstellen-> .... veröffentlichen; ich habe die Option ausgewählt "von CD/ DVD starten" und "nicht nacht Updates suchen" ausgewählt.

Als ich das Programm laufen lassen woltle, kam diese Fehlermeldung im Dateianhang. Aber beim Debuggen lief das Programm einwandfrei.

Weiß jemand Rat? Danke im Voraus. Lg,

R
rallepralle Themenstarter:in
142 Beiträge seit 2008
vor 13 Jahren

wenn ich auf Details klicke steht noch das hier: (liegt es vllt. daran, dass im Programm noch viele Warnungen sind?)

System.Data.SqlClient.SqlException: Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei C:\Users.....xxx....\AppData\Local\Apps\2.0\Data\7NGYHHC3.J61\MMM618DC.AHQ\wind..tion_23e972940c358e27_0001.0000_e904c9a30ad988d5\Data\TEST.mdf. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.
bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
bei System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
bei System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
bei System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
bei System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
bei System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
bei System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
bei System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
bei System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
bei System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
bei System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
bei System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
bei System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
bei System.Data.SqlClient.SqlConnection.Open()
bei WindowsFormsApplication1.Init.button4_Click(Object sender, EventArgs e)
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

60 Beiträge seit 2008
vor 13 Jahren

Der Fehler steht doch da?

Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei C:\Users
.....xxx....\AppData\Local\Apps\2.0\Data\7NGYHHC3.J61\MMM618DC.AHQ\wind..tion_23e972940c358e27_0001.0000_e904c9a30ad988d5\Data\TEST.mdf. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.

Eine solche Datenbank "test.mdf" scheint also schon vorhanden zu sein, kann die nicht neu anlegen...

S.

R
rallepralle Themenstarter:in
142 Beiträge seit 2008
vor 13 Jahren

Wie kann ich das Problem dann beseitigen bzw. eine exe-Datei erstellen, die auf jeden PC läuft? Die "Test.mdf" nicht mehr aufrufen? Also den Code mit TEST.mdf weglassen?


conn = new SqlConnection(
                "Data Source=.\\SQLEXPRESS; "+
        //        "AttachDbFilename=|Datadirectory| \\TEST.mdf; "+
                "Integrated Security=True; "+
                "User Instance=True; "+
                "Timeout= 30");
            conn.Open();


... dann kann das Programm auf eine Tabelle nicht mehr zugreifen



            SqlCommand cmd_Oeffnen = new SqlCommand(
                "SELECT Name FROM Oeffnen", conn);
            conn.Close();

F
10.010 Beiträge seit 2004
vor 13 Jahren
  1. Eine MDF ist eine SqlServer datenbank.
    Die läuft schonmal nur auf rechnern die diesen Server auc installiert haben.

  2. Benutzt Du die AttachDbFile Variante, die MS leider speziell für den Express eingeführt hat.
    Hier wird die DB beim ersten Start bekannt gemacht, und dann bei jedem weiteren Start der SW angehängt.
    Aber beim beenden wird die DB nicht detached.
    Das musst Du selber nachholen,

Muss es denn eine SqlServer DB sein?

R
rallepralle Themenstarter:in
142 Beiträge seit 2008
vor 13 Jahren

Danke für die Antwort! Welche Alternativen existieren noch? Und müsste ich die ganzen Daten, die ich bisher erstellt habe wieder neu anlegen?

R
rallepralle Themenstarter:in
142 Beiträge seit 2008
vor 13 Jahren

Also so hat es bei mir jetzt doch funktioniert: ich habe die Datenbank manuell in den Ordner release kopiert. Doch kann man dieses Kopieren in einen x-beliebiegen anderen lokalen Ordner auch automatisch machen lassen?