Laden...

Neue Datenbank mit SMO - FailedOperationException

Erstellt von MasterOfCoding vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.337 Views
M
MasterOfCoding Themenstarter:in
131 Beiträge seit 2004
vor 17 Jahren
Neue Datenbank mit SMO - FailedOperationException

Hallo!

Ich habe versucht mit SMO eine neue Datenbank zu erstellen:

Server serv = new Server(".\\SQLEXPRESS");

            Database db = new Database(serv, "Test1");

            FileGroup fg = new FileGroup(db, "PRIMARY");

            DataFile df = new DataFile(fg, "Test1_Data", "c:\\test1_data");


            df.GrowthType = FileGrowthType.Percent;
            df.Growth = 10;
            df.Size = 4000;



            fg.Files.Add(df);
            db.FileGroups.Add(fg);

           db.Create();

Leider bekomme ich beim Ausführen eine FailedOperationException mit der Meldung: Fehler bei Erstellen für Datenbank 'Test1'.

Folgender Code funktioniert allerdings:

Server serv = new Server(".\\SQLEXPRESS");

            Database db = new Database(serv, "Test1");
            db.Create();

Ich benutze SQL Server 2005 Express with Advanced Services.

Hoffentlich wisst ihr Rat,
Andreas

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
das dürfte ein Problem von Benutzerberechtigungen im Dateisystem sein.
Der SQL-Server wird unter einem Konto ausgeführt, das auf c:\ keine Schreibberechtigung besitzt. Die Schreibberechtigung muss in dem Ordner, in dem die Datenbank erstellt werden soll, für das NT-Prinzipal "NETZWERKDIENST" erteilt werden. (Berechtigung eintragen wie für Benutzer oder Gruppe, im ensprechenden Dialog kann man unter "Erweitert" das Prinzipal auch über die Suche finden und auswählen)

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

M
MasterOfCoding Themenstarter:in
131 Beiträge seit 2004
vor 17 Jahren

Vielen Dank!

Verstehe. Dann bezweckt dieser Code anscheinend sowieso nicht das, was ich wollte.
Denn ich wollte eine alleinstehende (unregistrierte) .mdf-Datenbankdatei erzeugen, sowie es auch im Visual Studio 2005 möglich ist.

mfg,
Andreas

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
eine "ungebundene" Datenbank kannst Du in dem Sinne auch nicht mit VS 2005 erstellen. Sie wird dann nur eben erst bei Programmstart bzw. Aufruf im Server attached.
--> vgl. Verbindungszeichenfolge der DB-Datei:
Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Pfad\zur\DB\Database1.mdf";Integrated Security=True;User Instance=True

Du kannst Dir aber helfen indem Du die DB wie oben anlegst und dann vom Server mittels der Stored Procedure "sp_detach_db" wieder die Serverbindung entfernst.

EDIT: d.h. die aus VS 2005 erstellte Datenbank ist zwar zunächst nicht an einen Server gebunden, aber ein Rechner auf dem kein SQLEXPRESS läuft wird die DB auch nicht öffnen können.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

M
MasterOfCoding Themenstarter:in
131 Beiträge seit 2004
vor 17 Jahren

Vielen Dank!

Dein Beitrag hat mir sehr geholfen.
Heißt das, dass es eigentlich gar keine so richtige Möglichkeit gibt, so eine alleinstehende Datenbank zu erzeugen, außer eben mit dieser Stored Procedure?

Natürlich ist mir klar, dass man SQLEXPRESS braucht, allerdings habe ich eher in Richtung einfacher Auslieferung des Programmes gedacht.

Wahrscheinlich werde ich wohl ganz normale, registrierte Datenbanken verwenden, weil das einfacher ist.

Danke,
Andreas