Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Problem beim erstellen der DB
Flitzs - Sa 23.05.09 22:07
Titel: Problem beim erstellen der DB
Hallo,
ich hab gerade begonnen, mich mit Datenbanken auseinander zu setzen.
Also hab mir mir SQL Server 2005 Express installiert und versucht eine SQL Datenbank via C# zu erstellen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| String str; SqlConnection myConn = new SqlConnection("Server=localhost\\SQLEXPRESS;Integrated security=SSPI;database=master");
str = "CREATE DATABASE MyDatabase ON PRIMARY " + "(NAME = MyDatabase_Data, " + "FILENAME = 'C:\\Users\\Username\\Desktop\\MyDatabaseData.mdf', " + "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " + "LOG ON (NAME = MyDatabase_Log, " + "FILENAME = 'C:\\Users\\Username\\Desktop\\MyDatabaseLog.ldf', " + "SIZE = 4MB, " + "MAXSIZE = 5MB, " + "FILEGROWTH = 10%)";
SqlCommand myCommand = new SqlCommand(str, myConn); try { myConn.Open(); myCommand.ExecuteNonQuery(); MessageBox.Show("DataBase is Created Successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (System.Exception ex) { MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information); } finally { if (myConn.State == ConnectionState.Open) { myConn.Close(); } } |
allerdings kommts bei der Zeile
myCommand.ExecuteNonQuery(); zu dem Fehler:
Fehler bei der Verzeichnissuche für die Datei "C:\Users\Username\Desktop\MyDatabaseData.mdf". Betriebssystemfehler 5(error not found).
Fehler bei CREATE DATABASE. Einige angezeigte Dateinamen konnten nicht erstellt werden. Überprüfen Sie zugehörige Fehler.
Leider versteh ich nicht, was ich da nun falsch gemacht habe, vielleicht kann mir hier ja wer helfen.
Mit freundlichen Grüßen
Flitzs
InCoBra - Sa 23.05.09 23:31
Der lokale SQL-Server ist aber schon gestartet oder? (Ich hab das selber noch nie gemacht, deshalb wäre das meine einzige Idee so aus dem Stehgreif...)
Flitzs - Sa 23.05.09 23:42
Hey,
danke für deine Antwort.
Ja, der Dienst "SQL Server (SQLEXPRESS)" wird ausgeführt.
Flitzs.
funcry - So 24.05.09 11:57
Offensichtlich findet er den Pfad nicht.
Den korrekten Pfad kann man auslesen mit:
C#-Quelltext
1:
| Environment.SpecialFolder.DesktopDirectory |
Anmerkung:
Inzwischen gibt es SQL Express 2008. Zu beiden Versionen gibt es ein kostenfreies SQL Server Management Studio. Wenn man dort eine DB oder Tabelle erzeugt, kann man das Script dazu sich anzeigen lassen oder Exportieren.
Flitzs - So 24.05.09 12:13
Hallo,
also ich hab nun mal verschiedene Pfad (auch C:\MyDatabaseData.mdf) probiert, und das Programm auch als Admin gestartet, nichts davon hilft, also nehm ich an der Fehler liegt wo anders.
Ich hol mir mal die neuere version vom SQL Server.
mfg Flitzs
funcry - So 24.05.09 13:24
Es grenzt sich damit ein. Wenn ich die DB auf dem Desktop erzeugen möchte, erhalte ich die Fehlermeldung:
C#-Quelltext
1:
| Betriebssystemfehler 5(Zugriff verweigert) |
Edit:
Es ist nicht unbedingt sinnvoll, eine DB in einem User-Abhängigen Pfad zu erstellen. (Würde ein anderer Windows-Benutzer darauf zugreifen wollen, würde es Probleme geben - da dieser normalerweise keine Zugriff auf diesen Bereich hat).
Wenn ich die DB in einem (von mir vorher erstellten) Verzeichnis erstelle, funktioniert es.
Ich würde mir überlegen, ob es nicht ratsam wäre, die DB im Standard-Verzeichnis zu erstellen:
http://support.microsoft.com/kb/307283
Alternativ (vorsicht, ich bin nicht sicher ob das eine saubere Lösung wäre) könnte man diesen Systempfad nehmen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| string filenameDB = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\MyDatabaseData.mdf"; string filenameLog = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\MyDatabaseLog.ldf";
string str = "CREATE DATABASE MyDatabase ON PRIMARY " + "(NAME = MyDatabase_Data, " + "FILENAME = '" + filenameDB + "', " + "SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " + "LOG ON (NAME = MyDatabase_Log, " + "FILENAME = '" + filenameLog+ "', " + "SIZE = 4MB, " + "MAXSIZE = 5MB, " + "FILEGROWTH = 10%)"; |
Flitzs - So 24.05.09 13:53
Hey,
also ich hab nun SQL Server 2005 deinstalliert und SQL Server 2008 installiert und nun funktioniert der Code einwandfrei.
mfg Flitzs
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!