Base de données intégrée pour .net pouvant fonctionner sur un réseau

J'étais (et je suis toujours) à la recherche d'une base de données intégrée à utiliser dans une application .net (c #). La mise en garde: L'application (ou au moins la base de données) est stockée sur un lecteur réseau, mais seulement utilisé par un utilisateur à la fois.

Maintenant, ma première idée était Édition SQL Server Compact . C'est vraiment bien intégré, mais il ne peut pas fonctionner sur un réseau.

Firebird seems to have the same issue, but the .net Integration seems to be not really first-class and is largely undocumented.

Blackfish SQL looks interesting, but there is no trial of the .net Version. Pricing is also OK.

D'autres suggestions de quelque chose qui fonctionne bien avec .net et fonctionne sur un réseau sans avoir besoin d'installer un logiciel serveur?

0
ajouté édité
Vues: 3
Intéressant que ce post ne soit pas considéré comme "basé sur l'opinion" contrairement à mon message stackoverflow.com/questions/20229964/… . En tout cas - je pense que toutes les bases de données embarquées proposées fonctionnent pour un utilisateur sur le serveur (y compris SQL CE), certaines permettent des lectures simultanées (comme SQ
ajouté l'auteur Prokurors, source

9 Réponses

Consultez VistaDB . Ils ont un très bon produit, la version serveur (3.4) est en bêta et est très proche de la version.

0
ajouté

Il y a aussi Valentina . Je suis tombé sur ce produit lorsque je travaillais sur un projet Real Basic. La version RB est très bonne.

0
ajouté

Il semble que ADO / Access soit parfait pour vos besoins. Il est cuit dans la pile MS, bien assaisonné et multi-utilisateur.

Vous pouvez créer par programme une base de données comme ceci:

Dim catalog as New ADOX.Catalog
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb")

Vous pouvez ensuite utiliser les méthodes ADO.NET standard pour interagir avec la base de données.

0
ajouté

Vous pouvez utiliser le Firebird intégré, c'est juste un DLL que vous aurez besoin d'expédier avec votre application.

À propos des choses non documentées, ce n'est pas vraiment vrai, le pilote firebird .NET implémente les interfaces ADO, donc si vous connaissez ADO vous pouvez travailler avec Firebird, fondamentalement au lieu de SQLConnection vous utiliserez FBConnection et ainsi de suite, mais mon conseil est d'écrire couche d'accès aux données et utiliser seulement des interfaces sur votre code, quelque chose comme ceci:

using FirebirdSql.Data.FirebirdClient;

public static IDbConnection MyConnection()
{
    FbConnection cn = new FbConnection("...");
    return cn;
}

Cet exemple est très simple, mais vous n'aurez pas besoin de beaucoup plus que cela.

Nous utilisons Firebird pour toutes nos applications sans aucun problème, vous devriez au moins essayer.

0
ajouté

Je suis perplexe.

Vous demandez une base de données intégrée - où la base de données elle-même est stockée sur le serveur. cela se traduit par le stockage du fichier de données sur un partage réseau. Vous dites alors que SQL Compact Edition ne fonctionnera pas ... sauf que si l'on regarde ce document:

Word Document:
Choosing Between SQL Server 2005 Compact Edition and SQL Server 2005 Express Edition

À la page 8, vous avez une belle coche verte à côté de "Stockage de fichiers de données sur un partage réseau".

Il me semble donc que votre première pensée était la bonne.

0
ajouté
C'est drôle, parce que SQL Server me dit spécifiquement que ça ne va pas: img512.imageshack.us/ img512 / 6082 / sqlceerror.jpg - peut-être s'agit-il d'un malentendu, car la création ne semble pas possible, alors que l'accès pourrait fonctionner. Cependant, pour mes besoins, la création de la base de données sur le lancement d'application était critique.
ajouté l'auteur Michael Stum, source
La réalité l'emporte sur la documentation dans presque tous les cas - la question se pose alors de savoir pourquoi les docteurs disent la "mauvaise" chose (ou du moins comment l'écart se produit). [FX: Parcourir, Parcourir] L'information est assez mince sur le terrain dans MSDN
ajouté l'auteur Murph, source
Jason, sans vouloir être grossier, environ la moitié de ce commentaire est faux parce que nous ne parlons pas d'une version de serveur multi-utilisateur à tout moment, juste la version compacte qui est essentiellement un .DLL (contrairement à Express ou l'autre serveur "versions".
ajouté l'auteur Murph, source
Vous pouvez CAN stocker votre base de données dans SQL Server sur un magasin réseau, mais seulement 1 SQL Server peut y accéder. Et vous courez alors en mode attaché qui est plus lent que la saleté. Juste parce que vous pouvez ne signifie pas que vous devriez. Il posait des questions sur chaque application accédant directement à la base de données, et non via une application serveur.
ajouté l'auteur Jason Short, source

Avez-vous considéré un OODB? Parmi les diverses sources ouvertes alternatives, je recommande db4o (désolé pour l'auto-promotion :)) qui peut fonctionner soit intégré ou en mode client / serveur.

Meilleur

Adriano

0
ajouté

SQLite came to my mind while reading your question, and I'm quite sure that it's possible to access it from a network drive if you keep yourself to the constraint of 1 user at a time.

SQLite sur .NET - Obtenir opérationnel en 3 minutes

0
ajouté
Je l'ai testé au cours des dernières semaines, et SQLite est vraiment un très bon produit. Ce n'est pas un RDBMS complet, bien sûr, mais il a toutes les fonctionnalités nécessaires pour faire le travail.
ajouté l'auteur Michael Stum, source
@ChrisHanson Il permet seulement l'accès en lecture pour plusieurs utilisateurs en même temps
ajouté l'auteur Prokurors, source
@Sven: SQLite a en fait un verrouillage de fichier assez complet, et une base de données SQLite peut certainement être consulté par plusieurs utilisateurs en même temps. Sur les systèmes de fichiers qui le prennent en charge, SQLite utilisera même les octets au lieu du verrouillage de fichiers entiers pour améliorer les performances de plusieurs utilisations simultanées de la même base de données. Ce n'est pas Access; c'est assez robuste.
ajouté l'auteur Chris Hanson, source

Je recommande Advantage Database Server (www.advantagedatabase.com). C'est une base de données embarquée mûre avec un grand soutien et accessible à partir de nombreux langages de développement en plus de .NET. La version "locale" est gratuite, s'exécute dans votre application sous la forme d'une DLL, ne nécessite aucune installation sur le partage serveur / réseau et prend en charge toutes les principales fonctionnalités de la base de données. Vous pouvez stocker les fichiers de base de données et / ou d'application sur le réseau; ça ne se soucie pas de savoir où sont les données.

Disclaimer: I am an engineer in the ADS R&D group. I promise, it rocks :)

0
ajouté

Un peu en retard à la poste ici .. Et VistaDB est déjà mentionné, mais je voulais souligner que VistaDB est géré à 100% (puisque votre message a été tagué .net). Il peut s'exécuter à partir d'un lecteur réseau partagé et 1 Mo xcopy est déployé.

Puisque vous mentionnez SQL CE, nous prenons également en charge la syntaxe T-SQL et les types de données (en fait plus que SQL CE) et ont des vues pouvant être mises à jour, des processus TSQL et d'autres éléments manquants dans SQL CE.

0
ajouté
Une autre bonne chose à propos de Vista (en comparaison avec d'autres) est qu'il prend en charge les écritures simultanées pour le fichier de base de données qui se trouve sur un emplacement réseau - pour moi, c'était la prise de décision
ajouté l'auteur Prokurors, source