Pour certains tests d'intégration, je souhaite utiliser LINQ vers SQL pour supprimer / recréer la base de données de test. Je l'ai déjà travaillé, cependant, toutefois, dans ce projet, la base de données est divisée en plusieurs schémas. p>
Quand j'essaie d'exécuter la commande Le nom de schéma spécifié "xyz" soit
n'existe pas ou vous n'avez pas
la permission de l'utiliser. P>
blockQuote>
Le login que j'utilise pour le faire a le rôle Comme il semble qu'il n'y ait pas de solution à ce problème à l'aide de Linqtosql, quelqu'un a-t-il des recommandations de tous outils similaires pour générer un DB qui sont de préférence gratuits? Idéalement, je ne veux pas avoir à mordre sur la main écrit SQL Construire des scripts. P> ctx.createdatabase () code> Je reçois cette exception: p>
dbcreator code> - a-t-il besoin d'autres autorisations? Sûrement un identifiant avec des personnes à créer une base de données devrait être en mesure de tout créer dans cette base de données également? P>
Mise à jour: h2>
6 Réponses :
Votre utilisateur nécessite également db_dlladmin code> pour cette base de données. P>
La base de données peut ne pas nécessairement exister à aucun moment, je ne peux pas mapper les autorisations.
Je fais généralement ce genre de travail dans Nant pour créer, initialiser la base de données, créer des utilisateurs, ajouter des connexions, etc. et également les capacités du back. J'ai un peu écrit sur ce sujet si vous êtes intéressé: p>
Intégration continue avec Cruisecontrol.net P>
Je vais devoir voir si je peux obtenir Linq à SQL pour travailler dans la façon dont vous essayez de l'utiliser ... Cela ressemble à ce que nous faisions avec NHibernate. P>
De ce que j'ai lu, la méthode CareDatabase () est limitée dans ce qu'elle peut reproduire de la base de données d'origine. Il ne recréera pas de choses comme des déclencheurs et de vérifier les contraintes, et je suppose que cela ne crée pas non plus de schémas personnalisés. Vous voudrez peut-être rechercher la création de la base de données à l'aide d'un SQL Server .MDF A > Fichier plutôt pour contourner ce problème. Voir Cette entrée de blog pour plus Détails sur certaines des limitations de la créatureAbase (). P>
Le rôle de serveur fixe DBCreator vous accorde la permission de créer une base de données. Si vous créez une base de données, vous êtes le DBO de ladite base de données et, en tant que DO, vous avez une puissance absolue dans la base de données, y compris la puissance de créer, de modifier et de déposer tout schéma et tout objet contenu dans n'importe quel schéma. P>
Le problème avec la créature de Linq () n'est pas la permission, est la qualité du code. Le code SQL généré ne crée simplement pas le schéma requis, de sorte que les affirmations de création de table échouent, car le schéma n'existe pas. P>
Votre meilleur choix, si vous pouvez vous le permettre, c'est ajouter un VSTS Base de données Edition GDR R2 à votre solution et déclarez tous vos objets de base de données dans le projet Edition de la base de données (une partie de votre solution). Vous obtiendrez également l'avantage supplémentaire de stocker tous vos objets de base de données dans une solution de contrôle source appropriée. La sortie du projet de base de données serait un fichier .dbschema contenant la définition de votre base de données. Au moment du déploiement (test ou réel), vous exécuteriez le VSDBCMD Outil d'importation de schéma pour importer votre fichier .dschema dans le serveur cible. L'outil est capable de faire un déploiement initial de votre schéma, ainsi que de nouvelles mises à niveau (déployer uniquement des différences). La solution VSDB vous permettrait de contrôler tous vos objets de base de données: tableaux, index, vues, schémas, contraintes de champ, contraintes de table, déclencheurs, procédures, utilisateurs, autorisations, connexions, etc., etc., il couvre vraiment tous em> les objets pouvant être définis dans SQL Server. P>
Je regarderais certainement le cadre d'entité, que je commence à examiner ces jours-ci. C'est une ou / m et conviendront certainement vos besoins, et beaucoup plus une fois que la prochaine version est libérée. p>
Frame-entité est également un enfant cerveau de Microsoft et peut être trouvé ici: http://msdn.microsoft.com/en-us/library/aa697427 (vs.80) .aspx p>
Une chose à retenir entre Linq à SQL et Linq aux entités est que vous programmez contre un modèle et non la base de données. P>
En réalité, LINQ to SQL prend des schémas de support, mais toutes les éditions SQL Server ne le font pas. Pour activer crééatabase () code> pour les générer, le fichier
DataContext = doit savoir que la base de données cible les prend en charge. Il peut être fait en définissant le fournisseur sur le
dataContext code>:
SQL Server Management Studio peut scripter une base de données complète. Cliquez avec le bouton droit sur une base de données, choisissez Tâches, puis choisissez "Générer des scripts". Pour plus de fonctionnalités, vous souhaitez probablement envisager une solution commerciale, telle que SQL Comparer gate.com/products/sql_compare/index.htm .