Welcher Datenbanktyp ist denn nun das richtige?

30/05/2008 - 10:07 von Andreas Mahub | Report spam
Guten Morgen,

wenn ich ein neues Projekt für Windows mit VB9 unter VisualStudio 2008
erstelle und ich möchte eine Datenbank hinzufügen, dann gibt es doch zwei
Typen von Datenbanken. Es gibt die "Lokale Datenbank" (.sdf-Dateien) und die
"Dienstbasierte Datenbank" (.mdf-Dateien).

Wenn ich eine "Lokale Datenbank" anlege dann kann ich "Linq To Sql" nicht
verwenden. Also es ginge schon, aber nur über Umwege mit Trick17
(sqlmetal.exe). Wenn ich eine "Dienstbasierende Datenbank" anlege, kann ich
"Linq To SQL" verwenden, was auch mein Wunsch/Ziel wàre.

Jetzt sagen wir mal, ich würde ein Projekt erstellen welches eine Datenbank
benötigt und ich würde mich für die "Dienstbasierende Datenbank"
entscheiden, diese verwendet doch SQL Express richtig? Kann ich ein solches
Projekt bedenkenlos weitergeben (als Setup z.B.) wo SQL Express mit dabei
ist? Oder ist SQL-Express ausschließlich für Entwickler zum testen?

Ach ja und wenn ich eine "Dienstbasierende Datenbank" gewàhlt habe und "Linq
To SQL" einsetze und die "Database1.mdf" NICHT ins Ausgabeverzeichnis
kopiere, dann bekomme ich ein Problem mit "TestDB.CreateDatabase()" weil er
dann sagt "ungültige Zeichen im Pfad". Wie kann ich es erreichen das er eine
neue Datenbank anlegt?

Sorry wenn ich so doofe Fragen stellen muss, ich bin beinahe tàglich auf der
Suche nach neuen VB2008 Büchern die sich auch umfassend mit diesem Thema
beschàftigen. Sie erscheinen aber jetzt erst in den kommenden Monaten.
Einige die für diesen Monat geplant waren sind immer noch nicht verfügbar
:-(
Und im Internet finde ich immer wieder "wiedersprüchliche" Angaben die
manchmal einfach nicht funktionieren wollen (Beispiel: .CreateDatabase).
Wenn ich aber VS2008 sage "Database1.mdf" IMMER KOPIEREN dann funktioniert
die Verbindung trotz des gleichen ConnectionStrings (wo mir ja bei Create
gesagt wird Illegale Zeichen im Pfad).

Gruß
Andy
 

Lesen sie die antworten

#1 Elmar Boye
30/05/2008 - 12:01 | Warnen spam
Hallo Andreas,

Andreas Mahub schrieb:
wenn ich ein neues Projekt für Windows mit VB9 unter VisualStudio 2008
erstelle und ich möchte eine Datenbank hinzufügen, dann gibt es doch
zwei Typen von Datenbanken. Es gibt die "Lokale Datenbank"
(.sdf-Dateien) und die "Dienstbasierte Datenbank" (.mdf-Dateien).



Grundsàtzlich besteht ein Unterschied zwischen den lokalen (SDF)
und dienstbasierten (MDF) Datenbanken.
Das MDF Format wird von den "großen" Editionen des SQL Servers verwendet.
Du benötigst dafür eine Installation von SQL Server 2005 oder Express
auf dem lokalen Rechner.
Das SDF Format wird von SQL Server Compact (und hatte diverse andere
Namen wie Everywhere, Mobile) verwendet.
Die Formate sind nicht austauschbar.

Visual Studio 2005 kommt mit SQL Server Compact 3.1,
<URL:http://msdn.microsoft.com/de-de/lib...3.aspx>
VS 2008 mit der erweiterten Compact 3.5 Version:
<URL:http://msdn.microsoft.com/de-de/lib...3.aspx>
(derzeit ist dort englische Dokumentation verfügbar).


Wenn ich eine "Lokale Datenbank" anlege dann kann ich "Linq To Sql"
nicht verwenden. Also es ginge schon, aber nur über Umwege mit Trick17
(sqlmetal.exe). Wenn ich eine "Dienstbasierende Datenbank" anlege, kann
ich "Linq To SQL" verwenden, was auch mein Wunsch/Ziel wàre.



Die Limitationen liegen dort mehr an den Designern, die die
Compact Edition nicht unterstützen.
Prinzipiell denkbar: Entwickeln unter SQL Server 2005 (Express)
und spàterer Einsatz von SQL Server Compact.


Jetzt sagen wir mal, ich würde ein Projekt erstellen welches eine
Datenbank benötigt und ich würde mich für die "Dienstbasierende
Datenbank" entscheiden, diese verwendet doch SQL Express richtig?



Ja.

Kann ich ein solches Projekt bedenkenlos weitergeben (als Setup z.B.)
wo SQL Express mit dabei ist?



Ja. Die aktuelle Version (mit Erweiterungen) findest Du unter:
<URL:http://www.microsoft.com/downloads/...598c3d>
"Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 2"

und eine Anleitung zum Einbetten:
<URL:http://msdn.microsoft.com/en-us/lib...2.aspx>
"Embedding SQL Server Express into Custom Applications"


Oder ist SQL-Express ausschließlich für Entwickler zum testen?



SQL Server Express darf von Dir mit der Anwendung weitergegeben werden.
Du mußt Dich dafür nur registrieren lassen:
<URL:http://www.microsoft.com/sql/editio...r.mspx>

Ach ja und wenn ich eine "Dienstbasierende Datenbank" gewàhlt habe und
"Linq To SQL" einsetze und die "Database1.mdf" NICHT ins
Ausgabeverzeichnis kopiere, dann bekomme ich ein Problem mit
"TestDB.CreateDatabase()" weil er dann sagt "ungültige Zeichen im Pfad".
Wie kann ich es erreichen das er eine neue Datenbank anlegt?



Wie heißt denn die Datenbank?
Besser man vermeidet in solchen Namen Leerzeichen und andere Sonderzeichen.
Grundsàtzlich sollte man verstanden haben wie Benutzerinstanzen
funktionieren und verwendet werden:
<URL:http://msdn.microsoft.com/en-us/lib...4.aspx>

Und sobald Du eine Mehrplatzanwendung hast, so wird die Datenbank
einmalig an die Server Instanz angebunden.

Im übrigen ist es meist sinnvoller, die Datenbank zunàchst mittels
SQL Server Management Studio (Express) zu entwickeln. Das Entwerfen
im O/R Designer sollte eher Kleinst-Anwendungen vorbehalten sein.
Denn spàtestens wenn Du eine Anwendung draußen hast, klappt das mit
dem Generieren ohnehin nicht mehr.

Gruß Elmar

Ähnliche fragen