55 votes

Quelles sont les limitations de SQL Server Compact? (Ou - comment choisir une base de données à utiliser sur les plates-formes MS?)

L'application que je veux construire à l'aide de MS Visual C# Express (je suis prêt pour la mise à niveau de Standard, si cela devient nécessaire) qui a besoin d'une base de données.

J'étais tout excité à propos de SQL Server Compact - parce que je ne veux pas que les gens qui serait d'installer mon application sur leur ordinateur pour installer l'ensemble de SQL Server ou quelque chose comme ça. Je veux que ce soit aussi facile que possible pour l'utilisateur final de l'installation.

J'ai donc été tout excité jusqu'à ce qu'il semble qu'il y a des limites à ce que je peux faire avec les colonnes dans mes tables. J'ai créé une nouvelle base de données, créé un tableau et quand je suis allé pour créer des colonnes, il semble qu'il n'y a pas de type "texte" - juste quelque chose appelé "ntext" qui semble être limitée à 255 caractères. "int" semble être limité à 4 (je voulais 11). Et il ne semble pas être un "auto_increment".

Ce sont les véritables limites que j'aurais à vivre avec? (Ou est-ce parce que je suis à l'aide de "l'Express" et non pas "Standard"). Si ce sont les vraies limites, quelles sont mes options de base de données qui répondent à mes besoins? (installation facile pour l'utilisateur d'être le biggie - je suppose que mon utilisateur final est juste un utilisateur moyen d'ordinateurs et si c'est compliqué serait frustré avec mon application)

-Adeena

PS: moi aussi je veux ma base de données est crypté à l'utilisateur final. Je ne veux pas d'eux pour être en mesure d'accéder aux tables de base de données directement.

PPS. Je n'ai lu: http://www.microsoft.com/Sqlserver/2005/en/us/compact.aspx et ne pas voir une discussion sur ces limitations

32voto

Joel Coehoorn Points 190579

Je ne suis pas sûr à propos du cryptage, mais vous trouverez probablement ce lien utile:
http://msdn.microsoft.com/en-us/library/ms171955.aspx

Comme pour le reste:
"Texte" et "auto_increment" rappelle-moi d'Accès. SQL Server Compact est censé être mise à niveau compatible avec le serveur éditions de SQL Server, que les requêtes et les tables dans votre base de données compacte devrait transférer à une base de données complète sans modification. Avec cela à l'esprit, vous devez d'abord regarder les types SQL Server et les noms plutôt que l'Accès noms: dans ce cas, à savoir l' varchar(max), bigint, et identity colonnes.

Malheureusement, vous remarquerez que cela ne parvient pas à l'égard de type varchar(max), car Compact Edition n'est pas encore le type varchar(max) type. Espérons qu'ils vont corriger ça rapidement. Cependant, ntext type que vous cherchez à supporte beaucoup plus de 255 octets: 230 en fait, qui s'élève à plus de 500 millions de caractères.

Enfin, bigint utilise 8 octets pour le stockage. Vous avez demandé 11. Cependant, je pense que vous avez peut-être confondu ici que la taille de stockage indique le nombre de chiffres après la virgule disponibles. Ce n'est certainement PAS le cas. 8 octets de stockage permet de valeurs jusqu'à 264, qui va l'accueillir beaucoup plus de 11 chiffres. Si vous avez beaucoup d'articles que vous voudrez probablement une classe de serveur de base de données, de toute façon. Si vous voulez vraiment à penser en termes de chiffres, il y a un numeric type fourni ainsi.

17voto

Tab Points 855

Quelques-uns, je l'espère, utile commentaires:

1er - ne pas utiliser SQLite sauf si vous aimez avoir la totalité de la base de données verrouillée pendant l'écriture de (http://www.sqlite.org/faq.html#q6) et peut-être plus important encore dans un .Net application, il n'est PAS thread-safe ou plus pour le moment, il doit être recompilé pour supporter les threads (http://www.sqlite.org/faq.html#q6)

Comme un autre pour mon projet actuel, j'ai regardé Scimore DB (ils ont une version intégrée avec ADO.Net fournisseur de: http://www.scimore.com/products/embedded.aspx), mais j'avais besoin d'utiliser LINQ to SQL comme un O/RM j'ai donc dû à l'utilisation de Sql Server CE.

L'incrément automatique (si vous faites référence à l'incrémentation automatique des clés) est ce que cela a toujours été, exemple de tableau:

-- Table Des Utilisateurs

CREATE TABLE Tests (
    Id       **int IDENTITY(1,1) PRIMARY KEY NOT NULL,**
    TestName     nvarchar(100) NOT NULL,
    TimeStamp    datetime NOT NULL
)
GO

Autant que la taille du texte je pense que c'était une réponse.

Voici un lien vers des informations sur le chiffrement à partir de microsoft technet: (http://technet.microsoft.com/en-us/library/ms171955.aspx)

Espérons que cela aide un peu....

16voto

John Melville Points 1140

Avait à carillon sur deux facteurs:

  1. J'utilise Sql Compact beaucoup et son grand pour qu'il travaille pour un utilisateur unique, intégré, base de données, avec un seul fichier de banque de données. Il dispose de toutes les SQL de bonté et de transactions. C'manches parallellism bien assez pour moi. Notez que quelques-uns des opposants sur cette page, utiliser le produit de façon régulière. Ne pas l'utiliser sur un serveur, ce n'est pas ce son. Beaucoup de mes clients ne connaissent même pas le fichier "base de données", c'est juste une question de mise en œuvre.
  2. Vous souhaitez crypter les données de vos utilisateurs -- sans doute, de sorte qu'ils ne peuvent l'afficher à partir de votre programme. Ce n'est tout simplement pas qui va se passer. Si votre programme peut décrypter les données, alors vous devez stocker la clé quelque part, et suffisamment dédié attaquant trouverez, période.

Vous pouvez être en mesure de cacher la clé assez bien que l'effort de récupérer cela ne vaut pas la valeur de l'information. Windows a bien de la machine et de l'utilisateur local de chiffrement des routines pour aider. Mais si votre conception a une forte exigence qu'un utilisateur de ne jamais trouver les données que vous avez caché sur leur ordinateur (mais de votre programme), vous devez refonte -- que les garanties ne peut tout simplement pas être accompli.

5voto

le dorfier Points 27267

SQL CE est une énigme pour moi. Avons-nous vraiment besoin d'encore un autre SQL base de données de la plate-forme? Et c'est la troisième dans les dernières années, ciblées sur les plates-formes mobiles à partir de MS ... je n'aurais pas beaucoup de confiance que ce sera la dernière. Il ne partage pas grand-chose si toute la technologie avec SQL Server - il en a un nouveau à partir de zéro, autant que je peux dire.

Je l'ai essayé, et alors eu le plus de succès à la fois avec SQLite et de la base de Code.

EDIT: Voici une liste des (nombreuses) des différences.

5voto

Travis Points 806

ntext prend en charge de très grandes données de texte (voir MSDN - c'est pour Compact 4.0, mais le même s'applique à 3,5 pour les types de données sont à mentionner).

int est un type de données numérique, de sorte que la taille de l' 4 soit 4 octets (32 bits de stockage (-2 147 483 648 à de 2 147 483 647). Si vous avez l'intention de stocker de 11 octets de données dans une seule colonne, utilisez l' varbinary type avec une taille de 11.

Incrémenter automatiquement les colonnes dans le Serveur SQL monde sont effectuées à l'aide de l' IDENTITY mot-clé. Cela provoque la valeur de la colonne à être déterminé automatiquement par SQL Server lors de l'insertion de données dans une rangée, la prévention des collisions avec toutes les autres lignes.

Vous pouvez également définir un mot de passe ou de chiffrer la base de données lors de sa création en SQL Compact pour empêcher les utilisateurs d'accéder directement à votre application. Voir la Sécurisation des Bases de données sur MSDN.

Tous les articles que vous mentionnez ci-dessus ne sont pas vraiment des limites, si bien qu'ils sont de comprendre comment utiliser SQL Server.

Cela dit, il y a certaines limites à SQL Compact.

  • Pas de support pour NVARCHAR(MAX)
    • NTEXT fonctionne très bien pour ce
  • Pas de support pour VIEWs ou PROCEDUREs
    • C'est ce que je considère comme la principale limitation

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X