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,
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)
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.
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();
Eine MDF ist eine SqlServer datenbank.
Die läuft schonmal nur auf rechnern die diesen Server auc installiert haben.
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?
Danke für die Antwort! Welche Alternativen existieren noch? Und müsste ich die ganzen Daten, die ich bisher erstellt habe wieder neu anlegen?
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?