none
définition de table non modifiable RRS feed

  • Question

  • Bonjour,

    je ne suis pas sûre d'être dans la bonne section, on verra...

    logiciel :
    VWD2010, SQL Server 2008 R2 Dev

    J'ai fait une migration vers 2010 d'un de mes projet qui fonctionnait sous 2008.

    Les string de connection aux bases données ont été vérifiée et le test est OK.

    Mais lorsque je vais dans la définition de table pour modifier une string char(15) en string char(30), il ne veut pas enregistrer les modifications.

    Il m'affiche ceci:

    ON voit pas la fin de phrase et le texte est non sélectionnable.

    De toute façon dans outils/option il n'y a rien concernant les bases de donnée.

    voici la connection string:

    <add name="connection1" connectionString="Data Source=xxx;AttachDbFilename=|DataDirectory|\yyy.mdf;Integrated Security=True

    "providerName="System.Data.SqlClient" />

    une idée de quoi faire? Merci.


    • Modifié dialAsp mercredi 9 novembre 2011 18:09
    • Type modifié Ciprian Duduiala jeudi 17 novembre 2011 06:16 attente de feedback
    • Type modifié dialAsp dimanche 27 novembre 2011 11:03 pas encore de solution
    mercredi 9 novembre 2011 18:07

Réponses

  • Bonjour,

    Le changement de définition est fait dans quel outil ?

    Dans "SQL Server Management Studio", dans le menu "outils", "options", "concepteurs", "concepteurs de table et base de données", j'ai une option "Empêcher de sauver les changements qui nécessitent la re-création de la table" qui est cochée par défaut et qu'il faut sans doute décocher (le libellé exact en français peut varier, c'est une traduction depuis ma version anglaise).

    Sinon il est possible aussi de la faire avec une commande (voir http://msdn.microsoft.com/fr-fr/library/ms190273.aspx exemple P - Modification de la taille d'une colonne).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 9 novembre 2011 20:25
  • J'ai testé en faisant des manips sous VWD 2010 et SSMS 2008 qui fonctionnent apparemment de la même façon. J'ai bien ce message mais il disparait une fois cette option désactivée dans chacun de ces deux produits. Dans les deux cas, je peux modifier la taille de ma colonne varchar (y compris la réduire après demande de confirmation) ou passer de tinyint en integer par exemple ou encore supprimer une colonne. Donc chez moi tout semble fonctionner normalement une fois cette option désactivée.

    Vérifier peut-être qu'il s'agit bien du même message que précédemment et non pas d'un autre message qui n'aurait rien à voir ?

    Sinon si la structure est modifiée dans SSMS mais n'apparait pas dans VWD c'est très probablement que l'on ne travaille pas sur la même base de données dans les deux environnements. Avez-vous vérifié que c'est bien la même base (celle située dans la solution et non pas dans le dossier debug par exemple) ? Une erreur de ce genre peut facilement arriver quand on travaille en se basant sur l'emplacement physique du fichier MDF...

    Reste aussi la possibilité de le faire via script (ce qui peut-être utile si vous avez plusieurs exemplaires de votre base).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    jeudi 10 novembre 2011 22:49

Toutes les réponses

  • Bonjour,

    Le changement de définition est fait dans quel outil ?

    Dans "SQL Server Management Studio", dans le menu "outils", "options", "concepteurs", "concepteurs de table et base de données", j'ai une option "Empêcher de sauver les changements qui nécessitent la re-création de la table" qui est cochée par défaut et qu'il faut sans doute décocher (le libellé exact en français peut varier, c'est une traduction depuis ma version anglaise).

    Sinon il est possible aussi de la faire avec une commande (voir http://msdn.microsoft.com/fr-fr/library/ms190273.aspx exemple P - Modification de la taille d'une colonne).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 9 novembre 2011 20:25
  • Bonjour,

    C'est un petit contrôle que Microsoft a rajouté.Normalement, ce genre de problème n'apparaît pas si la colonne modifiée est la dernière.En réalité, lorsque la longueur d'une colonne ( ou le type de données ) change, Microsoft a choisi l'option "bulldozer" : crééer une nouvelle table, transférer les données de l'ancienne table dans la nouvelle, purger l'ancienne table et renommer la nouvelle table avec le nom de l'ancienne table. La SQL Server Team a choisi ce contrôle supplémentaire ( bloquant mais sécurisant ) car il y avait eu des plaintes d'utilisateurs pour des données mal recopiées par exemple lorsque l'on change de types de données avec conversion nécessaires.

    La seule solution facile à mettre en oeuvre est celle de Patrice Scribe, il faut simplement se rappeler de bien vérifier si les changements effectués ne pourraient pas entraîner une des problèmes de remplissage de pages.

    Bonne journée


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    jeudi 10 novembre 2011 00:34
  • Les p'tits controles  rajoutés me plaisent pas trop.
    j'ai décoché la case dans:
    Outils/option/designers/concepteur de bases de donnnées et de tables/empécher les enregistrement de modifications qui necessitent la recréation d'une table.

    Les modification apportées sous "SQL Server Management Studio" ne corrigent apparemment pas les erreurs sous WD2010. J'ai pourtant enregistrer les changement refermé SSMS puis ouvert mon projet.

    Et la collonne modifiée est la dernière de ma table.

    Par curiosité j'ai testé avec une autre en changeant un smallint en integer et ca fait pareil.. Même message d'erreur.

    A la rigueur je comprendrais que ca pose probléme en rétrécissant le type de donnée, mais en l'augmentant... Sur 2008 ca disait "attention vos données risquent d'être tronquées" et ca le faisait. Il suffisait de s'assurer que les données soient compatibles avec le nouveau type de données choisi AVANT de l'appliquer. Là ca bloque (et quand je dit bloque, je pense à un autre verbe) Pas moyen d'enregistrer, pas moyen d'avancer dans le projet. Responsabiliser les utilisateurs dans le choix qu'ils font et corriger les erreurs de convertions était mieux que de les bloquer dans une impasse.

    Résultat je sens que je vais devoir effacer la collonne pour la recréer et remettre les valeurs. Heureusement il n'y en a pas des masses.

    Il y a une copie de ma table (.mdf1) qui revient même si je la suprime et je ne peux pas y accéder.

    Une nouvelle version est sensée être mieux...Ce n'est pas le cas.

    Je suis sure que je ne suis pas au bout de mes surprises.

    -----ajout------
    éh bien, non! je ne peux pas suprimer une collonne! De mieux en mieux...

    Et toujours ce message d'erreur qui me fait un doigt d'honneur.

    • Modifié dialAsp jeudi 10 novembre 2011 18:16 ajout
    jeudi 10 novembre 2011 17:55
  • Bonjour,

    Je suis désolé, j'ai oublié dans vôtre 1er post de lire WD 2010 .Je suppose que cela signifie Visual Web Developer 2010 ( Express surement ).

    Vous utilisez VWD pour créer une base de données. A part Visual Studio with Databases Tolls, VS n'est pas fait pour créer une base de données, ou une table ou n'importe quel objet concernant SQL Server.Le seul bon outil est SQL Server Management Studio Express ou non ( en racourci SSMS avec un E à la fin ou non ).

    1er problème : VS Express  utilise par défaut la notion d'User Instance avec tous ses problèmes .User Instance , appelé en anglais RANU et en français instance utilisateur est une particularité très interessante mais spécifique à SQL Server Express, seulement, les faiseurs de bouquins l'ont toujours présentée comme une panacée.Elle permet de dèvelopper rapidement des applications, mais à quel prix.J'ai mis 2 ans à comprendre comment celà marchait et encore sans l'aide de Mike Wachal , jamais je n'aurais réussi et je continuerai à patauger.

    Il suffit d'aller sur les forums us SQL Server Express et SQL Servr Data Access pour voir le nombre effarant de fils concernant les user instances : sur le forum SQL Server Express , 60% des fils entre la sortie de SQL Server 2005 et celle de SQL Server 2008. Heureusement que Mike Wachal a sorti des articles géniaux sur le SQL Server Express Weblog, sinon il y aurait eu au moins le double de fils.

    Je ne sais pas si vous avez VWD Express ou à partir de VS Pro ou édition supérieure mais il est évident que dans VS on ne peut pas inclure toutes les petites finitions qui rendent SSMS beaucoup plus agréable à utiliser.Je ne suis même pas sûr que les mises à jour de SSMS par les Services Packs SQL Server soient incluses dans Visual Studio ( il semblerait que non ).

    Je viens de reregarder  votre chaîne de connection

    Data Source=xxx;AttachDbFilename=|DataDirectory|\yyy.mdf;Integrated Security=True

    "providerName="System.Data.SqlClient"

    Je ne suis pas sûr qu'elle marche à cause de cette abomination d'AttachDbFilename et de l'utilisation de |DataDirectory|. Je crois me souvenir qu'il faut que vous précisiez

    User Instance = true;

    3 remarques concernant les User Instances:

    - déprécié avec SQL Server 2008,2008 R2 et 2012 (Denali).Disparaitra avec la version après Denali

    - non supporté sur toutes éditions de SQL Server autre que Express ( donc inutilisable dans les grandes sociétés )

    - Mike Wachal a écrit des articles dans le SQL Server Express Weblog pour expliquer comment accéder aux bases du type user instance, comment faire une sauvegarde ou une restauration ( et ce n'est pas simple ).Au fait, il est théoriquement possible d'utiliser les Reporting Services, mais prévoyez quelques boîtes d'aspirine...

    Je viens de relire votre dernière réponse et je me suis aperçu que vous avez écrit "Il y a une copie de ma table (.mdf1) qui revient même si je la suprime et je ne peux pas y accéder".C'est typique des user instances( il y a autant de bases créées que d'utilisateurs Windows qui utilisent la base "primaire" et elles sont situées dans les répertoires personnels de chaque utilisateur ).

    Un petit lien au sujet des instances utilisateurs ( en français ,normalement  je préfère MSDN us car la documentation en anglais est toujours mis à jour avant celle en français et je ne suis pas géné par les quelques fautes devenues très,très rares maintenant )

    http://msdn.microsoft.com/fr-fr/library/ms143684.aspx

    et pour le SQL Server Express blog ( en anglais, mais c'est une mine de renseignements )

    http://blogs.msdn.com/b/sqlexpress/

    Avant d'écrire d'écrire "Et toujours ce message d'erreur qui me fait un doigt d'honneur", ce que je trouve plus qu'abusif ( sur les forums us, j'aurais déjà signalé comme abusif et peut-être bien demandé la suppression de vôtre identifiant, mais sur les forums français, je ne suis qu'une personne qui essaie d'aider les autres  ), vous feriez mieux d'utiliser les outils qu'il faut et de demander poliment pourquoi vous avez ce problème.

    Une dernière remarque : il est toujours préférable :

    - de donner les noms complets des applications avec l'édition, la version et les services packs installés

    - de donner la chaine de connection complète.

    Il y a souvent des renseignements importants bien cachés ( par exemple AttachDbFileName ) dans les chaines de connection.De même , le service pack est très important car bien souvent il comporte des corrections non indiquées dans les liens correspondant aux KB ( mais que l'on peut trouver sur le blog du CSS en lisant entre les lignes )

    J'espère que vous ne m'en voudrez pas trop de mon "coup de gueule", mais j'ai une petite aversion pour les instances utilisateurs à cause des nombreuses heures perdues sur cette particularité en voie de disparition.Quant à vôtre écart de langage, c'est le problème des modérateurs/propriétaires de ce forum. Je n'aime pas que l'on attaque Microsoft pour un logiciel gratuit ( si version Express ) qui n'a pas été utilisé de la façoàn que ses concepteurs ont prévu.

    Bonne journée

    PS : si vous voulez que vos bases de données et vos tables soient créées ou modifiées de façon sure et correcte, utilisez SSMS(E).Si vous voulez utiliser les instances utilisateurs, vous pouvez , mais n'oubliez pas de regénérer tout vôtre code correspondant à la connexion/traitement des données.Si vous ne voulez pas des instances utilisateurs, 2 choses simples à faire :

    - avec SSMS(E) , mettre la facette UserInstanceEnabled à false

    - dans votre VS ou votre VWD, dans l'écran de connexion, cliquer sur le bouton Avancées juste au dessus du bouton Annuler , vous cherchez la proprièté user instance ( c'est la dernière ) et mettez la à false.Votre application pouura tourner sur n'importe quelle édition de SQL Server

     


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    jeudi 10 novembre 2011 21:51
  • J'ai testé en faisant des manips sous VWD 2010 et SSMS 2008 qui fonctionnent apparemment de la même façon. J'ai bien ce message mais il disparait une fois cette option désactivée dans chacun de ces deux produits. Dans les deux cas, je peux modifier la taille de ma colonne varchar (y compris la réduire après demande de confirmation) ou passer de tinyint en integer par exemple ou encore supprimer une colonne. Donc chez moi tout semble fonctionner normalement une fois cette option désactivée.

    Vérifier peut-être qu'il s'agit bien du même message que précédemment et non pas d'un autre message qui n'aurait rien à voir ?

    Sinon si la structure est modifiée dans SSMS mais n'apparait pas dans VWD c'est très probablement que l'on ne travaille pas sur la même base de données dans les deux environnements. Avez-vous vérifié que c'est bien la même base (celle située dans la solution et non pas dans le dossier debug par exemple) ? Une erreur de ce genre peut facilement arriver quand on travaille en se basant sur l'emplacement physique du fichier MDF...

    Reste aussi la possibilité de le faire via script (ce qui peut-être utile si vous avez plusieurs exemplaires de votre base).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    jeudi 10 novembre 2011 22:49
  • Bonjour ,

    La réponse de Patrice Scribe m'a fait penser à cet article de Mike Wachal :

    http://blogs.msdn.com/b/sqlexpress/archive/2006/07/17/668971.aspx

    qui pourrait expliquer au moins une partie des problèmes du créateur de ce fil ( et bien étayer l'hypothèse de Patrice Scribe )

    Bonne journée

     


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    jeudi 10 novembre 2011 22:59
  • Dans certains cas il peut être nécessaire de voir si la table ne doit pas être recréé. En effet le fait d'utiliser ALTER TABLE pour modifier la longueur ou le type d'une colonne ne permet pas de libérer l'espace disque nécessaire (par exemple en passant du INT à TINYINT par exemple ou inverse)

    Plus d'info ici.

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1
    vendredi 11 novembre 2011 10:40
    Modérateur
  • Je voulais éviter pour l'instant d'entrer dans ces subtilités, le problème de dialAsp étant déjà apparemment de pouvoir modifier la structure de ces tables de quelque façon que ce soit...
    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 11 novembre 2011 11:12
  • Bonjour, DialAsp,

     

    Est-ce que vous avez pu avancer en utilisant les infos de Patrice, Papy et Mikedavem ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    lundi 14 novembre 2011 07:47
  • Je voulais éviter pour l'instant d'entrer dans ces subtilités, le problème de dialAsp étant déjà apparemment de pouvoir modifier la structure de ces tables de quelque façon que ce soit...
    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    Tu as raison. Mon post est juste là à titre d'information.

    ++


    MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1
    lundi 14 novembre 2011 08:55
    Modérateur
  • Pour l'instant c'est de pire en pire:

    - le test de connexion à la base de donnée sous Visual Web Developper 2010 échoue.

    - SMSSM ne se connecte plus non plus à une base de donnée.

    j'ai l'impression que ce truc est en train de s'éffondrer sur lui-même.

    Pourtant depuis que j'ai coché la case je n'y ai apporté aucune autre modification. (forcemment puisque je ne peux en enregistrer aucune)

    Chaque fois que je veux m'y remettre de nouveaux problèmes pires que les précédents  apparaissent.

    Au train où ca va, demain c'est windows qui ne démarrera plus lol.

    Cette nouvelle version est tellement "sécurisante" qu'elle ne veut pas que je la démarre de peur que je fasse une erreur de manip.

    Je verrais si je trouve des infos sur ces nouveaux problèmes par moi même demain.

    là, j'en ai plein les bottes, à chaque jour suffit sa peine.

    P.S: être vulgaire c'est faire un doigt d'honneur, on ne l'est pas quand on est la personne qui le recoit. (dans le cas présent, je le recevais)

    C'était pour imager ce que je ressentais en voyant le message d'erreur interrompu au moment où il commencait à devenir interressant dans cette situation de cul-de-sac où il ne reste qu'une chosse à faire: Quitter sans enregistrer les modifications.

    Car j'ai du mal à imaginer des bras ouverts de bienvenus dans ces moments là.

    Donc à l'avenir je tâcherais de faire preuve d'hypocrisie en faisant comme si tout était rose dans le meilleur des mondes en ignorant ma frustration ou en l'intériorisant pour ne pas choquer les personnes présentes que je remercie pour leur bienveillance en essayant de m'aider.

    Mais je suis plutôt d'une nature à la jean marie bigard et à partiquer le "hurlement primaire"...

    Fin du P.S (c'était un long P.S!)




    • Modifié dialAsp mardi 15 novembre 2011 22:25
    mardi 15 novembre 2011 22:18
  • Bonjour dialAsp,

    Puisque vous n'arrivez plus à vous connecter à vôtre base de données avec SSMSE, , s'il vous plait, pourriez-vous donner le message d'erreur retourné par SSMSE ?Vous avez dans la MessageBox affichant ce message, des petites icônes qui vous permettent soit de copier le message d'erreur ( utile pour le copier/coller ) soit d'afficher un message soit-disant plus appofondi ( mais ce n'est pas forcément plus clair)

    Je suis désolé d'avoir mal interprété votre expression mais je n'ai fait de réagir avec l'idée d'interdire toute attaque grossière contre qui que ce soit ( il existait une 3ème solution plus douce que je ne'ai pratiquée que 3 fois en 3 ans : éditer la réponse douteuse pour faire disparaître l'expression injurieuse ou trop vexante, dans ce cas, seuls les modérateurs et le créateur du post voient la modification, pas les autres personnes

    Bonne journée 


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    mardi 15 novembre 2011 23:02
  • Bonjour,

    Le problème est surtout ces digressions se font au détriment de la fourniture des informations qui permettraient peut-être d'avancer sur votre problème.

    Donc actuellement vous ne pouvez même plus accéder à votre base via SSMS ? Quel est le comportement que vous constatez ? Vous pouvez vous connecter mais vous ne voyez pas votre base ou vous avez un message d'erreur à la connexion ?

    Je pense que l'utilisation de AttachDBFile pourrait être la source de cette confusion (SQL Server Express peut fonctionner soit avec des bases de données qui sont gérées en permanence par le moteur, soit avec des fichiers qui sont "attachées"/"détachées" du moteur en fonction des besoins ce qui fait que la base n'est pas toujours disponible notamment lorsqu'on lance ensuite SSMS alors que l'appli n'est pas en service. Cette dernière option pourrait être source de confusion si vous débutez avec SQL Server ?).

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 16 novembre 2011 10:18
  • aujourd'hui il y a eu un petit mieux inexpliquable:

    SSMS a bien voulu se connecter sans que quoi que ce soit n'eut été fait entre temps.

    Pour ce qui est des modifications des bases de données du projet sous VWD2010:

    1) Que je declare la base de donnée comme étant un "Fichier de base de donnée microsoft SQL Serveur" ou "Microsoft SQL Serveur" il m'est impossible de passer user instance à True sans que le test de connection fasse erreur.

    les user instance ne sont pas gerrés.

    2) je ne peux toujours pas:

    - faire de modification de type de donnée.

    - faire de suppression de colonne.

    - ajouter une base de donnée !

    3) encore mieux! Lorsque je crée un nouveau projet il m'est impossible d'y mettre une base de donnée!

    (le gribouilli autour de l'image est du texte, mais faisant partie de la capture. le détourage n'est pas assez resséré )

    Il a besoin des instances pour gerrer les base de données, mais celles ci ne sont pas gerrer par le logiciel! On tourne en rond.

    j'ai réinstallé microsoft SQL Serveur 2008 R2 express par dessus Microsoft SQL Serveur 2008 R2 developer car celui-ci n'était pas détecté lorsque j'ai voulu ajouter une base de donnée.

    Mais sous Express, le noeuds de cluster a fait echec (est ce lié aux instances?)

    Mais comme il n'y a pas de pc en reseau chez moi, ca m'a paru normal...


    • Modifié dialAsp samedi 19 novembre 2011 14:47 deplacement image
    jeudi 17 novembre 2011 17:22
  • Peut-être http://aspdotnetfaq.com/Faq/fix-error-Failed-to-generate-a-user-instance-of-SQL-Server-due-to-a-failure-in-starting-the-process-for-the-user-instance.aspx

    Notamment voir dans <tt>C:\Documents and Settings\YOUR_USERNAME\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS</tt>
     si il n'y aurait pas déjà des fichiers pour cette base ?

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    jeudi 17 novembre 2011 17:43
  • Bonjour,

    S'il vous plait , pourriez-vous déplacer l'image contenat votre message d'erreur? Elle cache une partie de ce que vous avez écrit. Cela m'est arrivé lorsque j'ai mis une image pour la ère fois dans une réponse.Merci d'avance.

    Une petite remarque : votre problème semble lié aux mêmes problèmes que j'ai rencontré les première fois que j'ai voulu utilisé les user instances ( ou puisque l'on est sur un forum français, les instances utilisateurs ).Ensuite, grace Mike Wachal, j'ai compris qu'il était pratiquement impossible ( sauf avec des acrobaties dans le code ) d'utiliser en même temps une connection "normale" et une connection par instance utilisateur.Problème connu depuis la sortie de SQL Server Express 2005 et qui m'a amené à éviter l'utilisation des instances nommées. Ce que je regrette , c'est qu'il y ait eu dans de livres dans lesquels , les auteurs présentaient les instances utilisateurs comme une panacée tant dans le développement que la gestion de l'instnce ou de la base de données ( la sauvegarde/restauration d'une instance utilisateur est parfois assez acrobatique, bonjour pour la fiabilité et la pérennité de l'application, une modification de la base originale est bloquée car la base de l'instance utilisateur sera différente de la base d'origine...).

    Je vais essayer de retrouver quelques fils à ce sujet, malheureusement, ils seront en anglais.Ils datent de la période Septembre 2005/Janvier 2008, aussi , la recherche risque d'être un peu longue.

    Solution peu glorieuse : supprimer la base correspondant à l'instance utilisateur.Créer une base avec SSMSE et utiliser vôtre VWD avec la propriété user instance = false ( pour mes instances SQL Server Express, j'interdis l'utilisation des instances utilisateurs dans les options de l'instance SQL Server ou en passant par les facettes de l'instance ( valable seulement pour les versions supérieures ou égales à 2008 , version >= 10  , 10 pour 2008  ou 10.50 pour 2008 R2 )

    Je reposterai des que j'aurai trouvé des liens exploitables par dialASP ( mais si quelqu'un d'autre veut poster ou rechercher, je n'y vois aucun inconvénient )

    Bonne journée


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    jeudi 17 novembre 2011 18:07
  • Rebonjour,

    Pour le remplacement des instances utilisateurs ( disponble avec SQL Server Express 2012 ) :

    http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx

    http://blogs.msdn.com/b/sqlexpress/archive/2011/10/28/localdb-where-is-my-database.aspx

    http://blogs.msdn.com/b/sqlexpress/archive/2010/02/23/how-to-take-ownership-of-your-local-sql-server-2008-express.aspx

    l'auteur de ces 3 articles n'est autre que le Directeur du produit SQL Server Express , donc quelqu'un qui connaît bien son sujet .

    Le 3ème article ( 3ème paragraphe ) explique une partie de vos problèmes .

    Autres articles ( provenant toujours du blog officiel de la SQL Server Express Team mais écrits par Mike Wachal )

    http://blogs.msdn.com/b/sqlexpress/archive/2008/02/22/sql-server-express-and-hosting.aspx

    http://blogs.msdn.com/b/sqlexpress/archive/2008/02/22/sql-express-behaviors-idle-time-resources-usage-auto-close-and-user-instances.aspx

    http://blogs.msdn.com/b/sqlexpress/archive/2007/03/20/backup-and-restore-with-user-instances.aspx

    http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx

    http://blogs.msdn.com/b/sqlexpress/archive/2006/07/17/668971.aspx  ( un problème tellement courant que Mike Wachal a du écrire un article sur ce sujet )

    Je suis désolé mais ces articles sont en anglais , mais écrits d'une façon simple et claire ( Mike et son successeur sav(ai)ent que 90% des utilisateurs sont débutants sur SQL Server et ont su se mettre à leur niveau )

    Bonne journée


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    jeudi 17 novembre 2011 18:51
  • Bonjour,

    Patrice, excellente réponse et le lien est tout aussi excellent.

    Juste quelques liens provenant du SQL Server Express Forum ( désolé, mais c'est un peu en l'honneur de Mike Wachal à qui je dois 90% de mes connaissances sur SQL Server Express )

    http://social.msdn.microsoft.com/forums/en-us/sqlexpress/thread/C00F888B-F4FE-4C26-92D5-9E22C03B56B0

    http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/700ffce1-19c4-402b-8194-0ae143fb7b4e

    http://social.msdn.microsoft.com/forums/en-us/sqlexpress/thread/27955C4A-C9A0-450C-8602-D53748D1F2D9

    http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/5b39146b-cb0e-4617-8e14-f6f6bef5bb85

    http://social.msdn.microsoft.com/Forums/en-US/sqlexpress/thread/0a17337b-48b0-4c28-93f4-7a46819d5d16

    Ce ne sont que de simples compéments à la réponse de Patrice.

    Bonne journée

    PS :

    Je n'ai pas eu le temps de regarder les quelques 50 000 posts qui concernent les instances utilisateurs dans ce forum

    PS : Est-ce que Ciprian ( ou un autre modérateur ) pourrait changer le type en question pour que je puisse proposer le post de Patrice comme réponse ? Merci d'avance

     


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    • Modifié Papy Normand jeudi 17 novembre 2011 20:19 PS ajouté
    jeudi 17 novembre 2011 20:16
  • Après avoir vider:
    C:\Documents and Settings\YOUR_USERNAME\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS

    Le nouveau projet veut bien ajouter une nouvelle base de donnée.
    ___________________________
    (*)J'ai ajouter ma base de donnée de mon projet en cours dans MSSMS, cela m'a permiet d'y faire mes modifications de type de données (char(15) en char(30))
    De retour sous VWD2010, lorsque j'essaie d'accéder à la base de donnée (même quand MSSMS est fermé):

    Je retourne sous MSSMS avec droit clic supprimer je coche "fermer toutes les connections existantes" et je decoche "supprimer les informations historiques..."

    De retour sous VWD2010E le message d'erreur à la tentative de connection à la base de donnée devient:

    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier "chemin de la base de donnée".MDF'.mdf. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.

    l'icone de la base de donnée change: Le cylindre jaune devient une feuille blanche avec un panneau triangulaire "attention"

    je retourne sous:
    C:\Documents and Settings\YOUR_USERNAME\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS
    pour y supprimer à nouveau les fichiers mais là, message d'erreur (même avec toutes les applications fermées)

    "Impossible de supprimer error : Cette ressource est utilisée par une autre personne ou un autre programme.
    Fermez les programmes susceptibles d'utiliser le fichier et essayez à nouveau."

    Il y a comme qui dirait un problème dans la mise à jour des processus actif.

    Je ferme ma session windows et je la reouvre.
    Là, l'effacement devient possible.

    Je retourne sous VWD2010E impossible d'accéder à la base. je vais voir sur mon disque et là horreur :
    La suppression sous MSSMS n'a pas supprimer le lien vers la base de donnée mais a supprimé la base de donnée elle-même!
    Je vais pour la récupèrer depuis la corbeille et là horreur!
    Elle n'y est pas, il ne reste que le fichier _log.

    (encore un truc qui cloche. Et une base de donnée perdue! Une!)

    je la supprime du projet.

    Et rebelote depuis (*) pour refaire la modification de typpe de donnée sur un backup de ma bdo qui s'est volatilisée .

    au lieu de supprimer je vais dans taches/détacher/cocher "supprimer les connections"

    retour sous VWD2010E, je rajoute la bdo existante et je vais pour l'ouvrir
    nouveau problème de compatibilité:

    La base de données "chemin de la base de donnée".MDF' ne peut pas être ouverte, car sa version est 661. Ce serveur prend en charge la version 655 et les versions précédentes. Un chemin de mise à niveau vers une version antérieure n'est pas pris en charge.
    Impossible d'ouvrir la nouvelle base de données "chemin de la base de donnée".MDF'. Abandon de CREATE DATABASE.
    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier "chemin de la base de donnée".MDF'.mdf. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.

    Donc je peux modifier sous MSSMS mais celle-ci est plus récente que le SQL Serveur 2008 R2 qui est détecté par VWD2010E.

    Et me revoilà bloqué...

    Je n'ai pas encore regardé aux liens en anglais, il faut déjà que je passe tout ca au traducteur. Mais quelque chose me dit que de toute façon l'imcompatibilité entre MSSMS et SQLS2008R2 m'empèchera d'aller plus loin.

    Même si cela avait fonctionné j'espère trouver un autre moyen à l'avenir pour faire ma p'tite modif de type de donnée sans avoir à faire tout ce mic mac.

    MSSMS ne peut-il pas faire sa sauvegarde dans une version antérieure?

    Et pourquoi n'est-il pas détecté par VWD2010E? C'est payant et c'est ignoré du reste du soft sensé fonctionné avec/pour... Oo



    • Modifié dialAsp samedi 19 novembre 2011 17:58
    samedi 19 novembre 2011 17:55
  • Bonjour,

    S'il vous plait, pourriez-vous expliquer ce que signifie MSSMS ? je suppose que vous voulez parler de Microsoft SQL

    Server Management Studio. Dans ce cas, ouvrez MSSMS, dans le menu, cliquez sur Aide ( dernier item à droite ) .

    Dans le sous-menu, cliquer sur A propos de... ( dernier item de la liste ). Une nouvelle fenetre s'ouvre.

    Et postez la valeur de la 1ère ligne , 2ème colonne ( correspond à Microsoft SQL Server Management Studio.Ou mieux,

    cliquez sur le bouton marqué Copier les informations et collez ces informations dans votre réponse ( je vous donne

    les informations pour mon SSMS dans mon post avec cette méthode )

    Microsoft SQL Server Management Studio 10.0.5500.0

    Outils clients Microsoft Analysis Services 10.0.5500.0

    Microsoft Data Access Components (MDAC) 3.85.1132

    Microsoft MSXML 2.6 3.0 5.0 6.0

    Microsoft Internet Explorer 8.0.6001.18702

    Microsoft .NET Framework 2.0.50727.3625

    Système d'exploitation 5.1.2600

     

     

    Pourriez-vous nous dire si vous avez appliqué le Visual Studio 2010 SP1 après l'installation de votre VSWDE ?

    Ne connaissant pas vôtre niveau en SQL Server et Visual Studio Express ( que ce soit  Web Developer, VC#,VB , c'est la même chose ), je vais vous donnez quelques petites explications ( j'expliquerai en dernier comment faire pour créer correctement vôtre base de données ) :

    - les instances utilisateurs ( user instances en anglais ) sont en train de mourir, donc il ne sert à rien de les apprendre.Il vaut mieux les oublier.

    - Seule l'édition Express de SQL Server peut utiliser les instances utilisateurs.Il me semble que vous aviez installé  "Microsoft SQL Serveur 2008 R2 developer ".Si mes souvenirs sont bons, il vaut en gros 100 € et il correspond en gros à l'édition Data Center mais avec la différence qu'il peut s'installer même sur des éditions Home de Vista/Windows 7.C'est la meilleure édition pour un débutant puiqu'elle permet de ne pas avoir les limites imposées par la version Express ( taille des bases, SQL Agent disponible,Analysis Services et Reporting Services disponibles ... )

    - vôtre problème vient en réalité de votre Visual Studio Web Developer Express qui , comme tous les Visual Studio Express , considère que vous souhaitez utiliser une connexion du type instance utilisateur ( je rappelle que l'édition Developer de SQL Server NE SUPPORTE PAS les instances utilisateurs ).Il faut donc faire comprendre à VSWDE que vous voulez une connexion normale.

     Et c'est très facile : dans l'écran qui définit la DataSource , il faut cliquer sur le bouton libellé Avancées ( juste au-dessus du bouton Annuler ) et vous mettez la valeur de user instance ( tout en bas de la propertygrid ) à faux . Vous devrez toujours mettre le nom du fichier "datafile" ( avec l'extension .mdf ) dans le nom du fichier.

    Je viens d'essayer avec mon VS VC# 2010, il ne supporte en mettant DataSource ( nom de l'instance SQL Server ) à .\SQLEXPRESS1 , Initial Catalog à AdventureWorks , user instance à False ( de toute façon, comme j'ai interdit à mon instance SQL Server Express 2008 SP3 d'accepter les instances utilisateurs, car je ne veux pas m'encombrer de cette espèce batarde de SQl Server, je ne peux pas mettre user instance = true ) et j'ai laissé à blanc la propriété AttachDbFileName . J'obtiens une chaîne de connexion

    Data Source=.\SQLEXPRESS1;Initial Catalog=AdventureWorks;Integrated Security=True;Connect Timeout=30;User Instance=False

    qui est tout à fait correcte , mais quand j'appuie sur OK, je retourne à l'écran ajouter une connexion , j'obtiens un message d'erreur "Aucun fichier de base de données n'a été spécifié".Ce qui est aberrant : c'est un bug bien connu de tous les Visual Studio Express ( si vous avez fait le bon choix pour la source de données fichier de base de données SQL Server, vôtre Visual Studio Express veut un fichier de bases de données (.mdf) et il se moque bien que vous ayiez donné un nom correct de base de données ( dans Initial Catalog ).

    Il y a une parade : appuyer sur le bouton parcourir à coté du nom de fichier de base de données et vous partez à la pêche du nom de ce fichier .mdf.En ce qui me concerne, la database a été créée dans le même répertoire que la base master, c'est d'ailleurs la valeur par défaut ), je retrouve

    C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS1\MSSQL\DATA\AdventureWorks_Data.mdf

    Grâce au bouton Avancées, je peux retrouver la chaine de connexion construite par mon VSC# Express

    Data Source=.\SQLEXPRESS1;AttachDbFilename="C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS1\MSSQL\DATA\AdventureWorks_Data.mdf";Initial Catalog=AdventureWorks;Integrated Security=True;Enlist=False;Connect Timeout=30;User Instance=False

    Quand j'appuie sur le bouton Tester la connexion, miracle : j'ai "Le test de la connexion a réussi"

    En tout cas , je ne dis pas bravo à l'équipe qui a déveoppé les Visual Studio Express, car se rappeler le nom du répertoire et du fichier est un peu plus compliqué que le simple nom de l'instance SQL Server Express.C'est compliqué, il y a des risques d'erreurs, tout ce qu'il faut éviter aux débutants qui utilisent majoritairement les Visual Studio Express.

    De toute façon, dans 4 ans au plus tard, les instances utilisateurs ne seront plus supportées et j'espère que l'équipe des Visual Studio devront changer leur méthodes de construction de la chaîne de connexion si elle ne veut pas être la risée de tout le monde.

    Peut-être que VS 2011 se comporte d'une façon plus normale et surtou plus logique comme mon vieux VS 2008 Standard.

    Ne créer pas vôtre base de données avec votre VSWDE, la création doit se faire par SQL Server Management Studio ( qu'il soit Express ou non ), la méthode est presque la même que dans VSWDE.Il suffit de se connecter dans SSMS (avec ou sans E).Vôtre instance apparaitra dans le "panel" gauche.En r&lité, c'est un contrôle du type "Treeview".Donc, à gauche du nom de l'instance, si vous voyez un +, cliquez dessus.Vous verrez apparaître les différents noeuds.Cic droit sur le noeud bases de données , cliquez sur nouvelle base de données et vous arriverez à l'écran de création de la nouvelle base de données.

    Un petit conseil : saisissez tout de suite le nom de votre base de données. Pour la ligne Rows data , rajoutez _data au nom logique ( si votre base s'appelle newbase, il vaut mieux avoir newbase_data.Pour la taille de la 1ère ligne qui correspond au fichier "data" , mettez 10 Mo ( 3 Mo est inférieure à la taille de la base système model et il faut que la nouvelle base est une taille supérieure à celle de la base model ).Pour l'accroissement de la base, mettez dans un 1er temps 10 Mo , cela suffit en général ) .Pour la 2ème ligne, qui correepond au fichier log des transactions, mettez les mêmes valeurs.Pour l'emplacement des fichiers, gardez les valeurs données par défaut, ce sont celles qui correspondent aux bases système et facile à se rappeler.

    La valeur par défaut du mode de récupération ( Simple ) n'est pas forcément la meilleure, mais elle devrait suffire, tout au moins au début.

    Si vous êtes sur la 1ère page, vous verrez en haut un petite étiquette marquée script.Si vous appuyez sur la petite fléche dirigée vers le bas , et que vous cliquez sur le 1er choix, vous aurez le script de votre base de données qui apparaitra dans une 1ère fenetre.Très pratique pour vérifier si vôtre base de données a bien les valeurs que vous voulez

    Dans la partie gauche, cliquez sur options et vérifiez que la valeur des propriétés Fermeture automatique et Réduction automatique sont à False ( cela vous évitera plus tard de gros problèmes de performances ).

    Pour créer la base, appuyez sur la touche OK .

    Je pense que la création de vos tables, vues, procédures stockées, fonctions ne vous posera pas trop de problèmes, puisque elle devrait être identique à celle dans VSWDE.

    Je suis désolé de ce post aussi long, mais l'ensemble de vos problèmes ne viennent pas de SQl Server mais des versions Express de Visual Studio.

    N'hesitez pas à poster à nouveau pour plus d'aide ou explications.

    Bonne journée

    PS pour les modérateurs ou les MSFT : je suis désolé de "mettre mis en rogne" contre la Visual Studio Team, mais c'est elle qui est responsable de la mort des user instances.

    C'est une particularité spécifique à l'édition Express de SQL Server, mais elle a été très mal expliquée surtout dans les livres ce qui a entrainé des difficultés pour les utilisateurs et une pluie de fils dans le Forum américain réservé à SQl Server Express , ce qui a excédé les modérateurs et en particulier Mike Wachal. Quand , dans le sondage fait sur SQL Server 2005 , il est apparu que les instances utilisateurs étaient décriées, Krzystof Kozielczyck a préféré mettre les user instances en depreciated, début de leur mort.


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    samedi 19 novembre 2011 22:07
  • Merci pour toutes ces explications, je vais y regarder aujourd'hui.

    Je re-éditerais ce post pour dire ce qu'il en est quand j'aurais avancé.

    ----ajout------

    J'ai donc créer une nouvelle base de donnée comme suit:


    N.B: il a fallu cliquer sur ajouter pour que la 3eme ligne row_data apparaisse.
    j'ai noté le chemin d'accés dans un notepad pour le garder sous la main.

    J'y ai ajouté une table (nom:table_1) avec une colonne (nom: colonne1) et enregistré.
    Lors de la deconnection (droit click tache/détacher/suprimer les conections) un message est apparu:

    N.B: lorsque j'ai cliqué sur les 2feuilles en bas à gauche pour copier le message erreur une deuxième fenetre d'avertissement bug apparait.
    Ca n'arrive pas à copier le mesage. dommage. -> capture écran

    Je me suis dit que le 1er message était dû au fait que je n'avais pas défini de clé primaire.
    j'ai reconnectée la db "TestModif" et je l'ai rajouté, mis 2 lignes de données pour tester ma colonne, enregistré, redeconnecté.


    Sous VWD2010E j'ai rajouté au projet dans app_data la db en pointant le fichier en suivant le chemin dans notepad.
    dans l'explorateur de donnée j'ai modifier la connection en:
    SQL serveur
    j'ai mis un le nom du serveur
    j'ai pointé le fichier .mdf
    j'ai modifié dans "avancé" user instance à false (il était déjà à false il me semble)
    test de connection: Ok


    • Modifié dialAsp samedi 26 novembre 2011 17:38
    dimanche 20 novembre 2011 13:22
  • (2eme post pour 1 autre captures écran)

    j'affiche la définition de table,
    je change char(10) en char(20)
    lors de l'enregistrement:

    En faisant les modification sous MSSMS et en revenant sous VWD2010E les modifications sont prises en compte pour une base de donnée crée sous MSSMS.

    N.B:
    refermer la connection à la base de donnée sous VWD2010E est parfois insuffisant pour que la connection puisse se refaire sous MSSMS.
    Il y a un mauvais rafraissement des connections en cours.
    Il est parfois necessaire de fermer le projet sous VWD2010E et/ou de refermer puis réouvrir MSSMS.

    Donc: Toutes mes bases de données antérieures sont bonnes à mettre à la poubelle, je n'ai plus qu'à toutes les refaire.
    [retroussage de manche] Ce n'est pas comme si c'était la première fois que je suis déçu par un upgrade.
    Merci papy normand (et autres participants) pour ta patience et toutes ces infos.
    Mes db n'ont pu être sauvées mais au moins je sais comment en avoir qui fonctionnent et soient de type modifiables.
    A défaut de grives, on mange du merle.

    A voir si par la suite mes requetes aboutissent à un résultat...
    • Modifié dialAsp dimanche 20 novembre 2011 15:42
    dimanche 20 novembre 2011 15:38
  • Bonjour,

    Un petit détail : sur les forums américains, j'ai toujours vu SQL Server Management Studio ( abréviation classique SSMS ) et pour l'édition Express SQL Server Management Studio Express ( ou SSMSE ).Pour la version 2005  Express , le nom "officiel" est SQL Server Management Studio Express Edition ( ou SSMSEE ).Même les membres de la SQL Server (Express) Team utilisent ces abréviations qui sont comprises par tout le monde et qui ont l'avantage d'être beaucoup courtes à taper. Ce n'est qu'une petite information pour une personne que j'apprécie.

    Pourriez-vous me dire pourquoi vous détachez vôtre base de données de son instance SQL Server ? Je pense que c'est la raison poour laquelle vous avez vôtre message "La référence d'objet n'est pas définie à une instance d'objet". Normal puisque la base de données n'existe plus dans l'instance SQL Server. Au moins , vous aurez appris comment détacher/attacher une base de données avec SSMS ( c'est tellement plus facile qu'avec les commandes Transact-SQL ).Je considère votre test comme bon, il montre que vous cherchez à comprendre ce qui se passe .

    Pour ôtre problème de rafraichissement des connexions, c'est un problème normal : les connexions sont gardées dans ce que l'on appelle un pool.Les connexions fermées sont conservées dans ce pool et définitivement détruites au bout d'un temps indéterminé , au moins 1 minute, mais pouvant atteindre 10 minutes. J'ai mis beaucoup de temps à le comprendre et c'est un modérateur MSFT du SQL Server Data Access Forum qui m'a "filé" les liens vers des documents qui expliquent ce phénomène. De plus, si on utilise des instances utilisateurs, le temps de réponse peut être encore pire

    Un bon conseil : faites régulièrement des sauvegardes ( SQL Server backups ) de vos bases de données, cela vous évitera de perdre vos données.C'est rapide et surtout très simple avec SSMS .

    Je vous conseillerai de vous (re)mettre à l'anglais, parce que c'est la Langue qui est la plus utilisée dans le monde SQL Server et les forums américains forment une mine de renseignements.Même des MVP français y participent ( je pense à Sylvain Fontaine, mais il doit bien y en avoir d'autre ).

    Mais je préfère terminer en saluant le travail remarquable que font sur les forums français des personnes comme Ciprian , Patrice Scribe, Christian Robert ou Mikedavem. Ce n'est qu'un petit échantillon des gens sympathiques et efficaces que j'ai  croisé sur les forums français et que j'espère bien rencontrer en chair et en os aux journées GUSS sur Denali ( oh pardon SQL Server 2012 ) les 12 et 13 Décembre.

    Bonne journée

     


    Mark Post as helpful if it provides any help.Otherwise,leave it as it is.
    dimanche 20 novembre 2011 18:50
  • Je retire la connection de la base pour pouvoir y accéder sous VWD2010E.

    Sinon lorsque je l'ajoute à mon projet j'ai un message (cité de mémoire) du genre:

    "Impossible d'ouvrir la base de donnée car un autre programme l'utilise actuellement"

    Et c'est aussi un réflexe que de refermer toutes les connections une fois que l'on ne l'utilise plus (en mode execution requete ou autre).

    _____________

    Le message "La référence d'objet n'est pas définie à une instance d'objet" n'est apparue qu'une fois. celà devait vraiement être lié à l'absence de clé primaire.

     ____________

    Encore un soucis:

    A chaque fois que j'ouvre mon projet et que je tente d'ouvrir une base de donnée, ce message réaparait:

    La base de données 'chemin du projet\test.MDF' ne peut pas être ouverte, car sa version est 661. Ce serveur prend en charge la version 655 et les versions précédentes. Un chemin de mise à niveau vers une version antérieure n'est pas pris en charge.
    Impossible d'ouvrir la nouvelle base de données 'chemin du projet\test.MDF' . Abandon de CREATE DATABASE.
    Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier 'chemin du projet\test.MDF' . Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC.

    Je dois a chaque fois refaire les paramétrages:

    SQL serveur
    le nom du serveur
    repointer le fichier .mdf

    L'enregistrement de cette connection n'est que temporaire.

    Chaque fois que la connection à la base est fermée (par moi même ou par fermeture de VWD2010E) il reprend une connection défaillante par défaut.

    J'ai refait un test avec une nouvelle base de donnée avec dans propriètè/suivi des modification à true mais ca n'y change rien.

    • Modifié dialAsp vendredi 25 novembre 2011 11:49 ajout problème
    mercredi 23 novembre 2011 11:41
  • Voici le message dont j'ai parlé plus haut "de mémoire" lorsque je tente de me reconnecter à une base de donnée dont la connection vient d'être fermée un peu plus tôt.

    TITRE : Microsoft SQL Server Management Studio
    ------------------------------

    Échec de la récupération de données pour cette demande. (Microsoft.SqlServer.Management.Sdk.Sfc)

    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476

    ------------------------------
    INFORMATIONS SUPPLÉMENTAIRES :

    Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------

    CREATE FILE a rencontré l'erreur du système d'exploitation 32(Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus.) en essayant d'ouvrir ou de créer le fichier physique 'chemin du fichier\nom du fichier.mdf'. (Microsoft SQL Server, Erreur : 5123)

    Pour obtenir de l'aide, cliquez sur : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=5123&LinkId=20476

    ___________________________

    Je vais quand même pas rebooter mon pc à chaque fois que je veux modifier un type de donnée pour éviter d'atteindre 10min (voir plus) le temps que la DBase soit afin détectée fermée.

    je suis sure que les personnes qui disent n'avoir aucun problème sont sous windows 7 *64.

    Votre VWD2010E, il a été testé sous XP 2002 SP3?

    PC:
    Windows XP 2002 SP3

    logiciel VWD2010E:
    Microsoft Visual Studio 2010
    Version 10.0.40219.1 SP1Rel
    Microsoft .NET Framework
    Version 4.0.30319 SP1Rel

    Version installée : WD Express

    Microsoft Visual Web Developer 2010   01015-169-9940015-70329
    Microsoft Visual Web Developer 2010

    Correctif pour Microsoft Visual Web Developer 2010 Express - Français (KB2548139)   KB2548139
    Ce correctif est pour Microsoft Visual Web Developer 2010 Express - Français.
    Si vous installez ultérieurement un Service Pack plus récent, ce correctif sera automatiquement désinstallé.
    Pour plus d'informations, visitez http://support.microsoft.com/kb/2548139.

    Microsoft Visual Web Developer 2010 Express - Français Service Pack 1 (KB983509)   KB983509
    Ce Service Pack est pour Microsoft Visual Web Developer 2010 Express - Français.
    Si vous installez ultérieurement un Service Pack plus récent, ce Service Pack sera automatiquement désinstallé.
    Pour plus d'informations, visitez http://support.microsoft.com/kb/983509.

    logiciel MSSMS2008R2Dev:
    Microsoft SQL Server Management Studio      10.50.1600.1
    Outils clients Microsoft Analysis Services      10.50.1600.1
    Microsoft Data Access Components (MDAC)      3.85.1132
    Microsoft MSXML      2.6 3.0 5.0 6.0
    Microsoft Internet Explorer      8.0.6001.18702
    Microsoft .NET Framework      2.0.50727.3625
    Système d'exploitation      5.1.2600

    Je viens de relire l'ensemble du post pour les "oublis" que j'aurais pu faire:
    la commande proposée par P. Scribe je n'y comprends pas grand chose.
    Et vu le message de mikedaven:
    "En effet le fait d'utiliser ALTER TABLE pour modifier la longueur ou le type d'une colonne ne permet pas de libérer l'espace disque nécessaire "
    de plus l'interface est prévue pour modifier les infos, j'entends que cela puisse fonctionner ainsi (comme cela le devrait)

    Les tests effectués sont sur une toute nouvelles base de donnée avec la table la plus simple qui soit (montrée dans une capture plus haut)
    Il va s'en dire que je ne pointe pas la mauvaise base d'un coté (MSSMS) ni de l'autre (VWD2010E)
    Il n'y a plus de fichier "nom.mdf1".

    P. Scribe:
    "J'ai testé en faisant des manips sous VWD 2010 et SSMS 2008 qui fonctionnent apparemment de la même façon. J'ai bien ce message mais il disparait une fois cette option désactivée dans chacun de ces deux produits."
    Chacun des 2 produits???
    De quelle option parle-t-on?
    "empécher les enregistrement de modifications qui necessitent la recréation d'une table"
    ou
    mettre à false "user instance"?


    je n'ai désactivé l'option ""empécher les enregistrement..." que sous MSSMS2008R2Dev.
    Je ne l'ai trouvé null part ailleurs.

    la chaine de connection est:
    Data Source=Workgroup;AttachDbFilename="Chemin du projet"\App_Data\creaMSSMEsousProjet.mdf;Initial Catalog=creaMSSMEsousProjet_data;Integrated Security=True

    Je ne peux pas enregistrer une quelconque modification de table sous VWD2010E.
    Les modifications de connections sont temporaires et redeviennent mauvaises à la réouverture.
    Les modifications sous MSSMS2008R2Dev sont trop contraignantes.

    • Modifié dialAsp dimanche 27 novembre 2011 12:35 récapitulatif
    dimanche 27 novembre 2011 11:01
  • Bonjour,

    Donc de mon côté je voulais dire que dans "SQL Server Management Studio" comme dans "Visual Web Developer 2010" dans "outils", "options", "concepteurs" il y a une option "Empêcher les changements qui nécessite une recréation de la table" (ou à peu près, mes versions sont en anglais).

    Plus précisemment pour VWD2010 c'est dans : "outils"," options", cocher "montrer toutes les options", choisir "Outils Base de données", "Concepteur base de données et tables" et donc "Empêcher etc..."

    Je suis effectivement sous Windows 7 (x64 ou x86).

    Donc j'ajoute le fichier MDF (j'ai eu effectivement à supprimer des vieux fichiers pour ne pas avoir le message d'échec de la création de l'instance utilisateur) dans un projet application web vide ce qui le place dans le dossier App_Data. Dans VWD2010, je fais ouvrir sur ce fichier et j'ai pu créer une table avec un champ nchar(10). Je ferme, je reprends le fichier il est bien en nchar(10) et je le passe en nchar(5) sans souci. Je ferme, je réouvre, il est bien en nchar(5).

    L'ouverture du fichier m'affiche la fenêtre "Explorateur de base de données" dans VWD2010.

    Donc pour l'instant sans utiliser du tout "Microsoft SQL Server Management Studio"... Cela donne quoi si on essaie les manips ci dessus ?

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    dimanche 27 novembre 2011 16:45
  • Bonjour, dialAsp,

     

    Vu qu’il y a plus d’une semaine depuis votre dernier post et vu que les premières réponses de Patrice sont des solutions pour le problème initial, je vais les marquer comme réponses.

     

    Merci de votre compréhension.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    lundi 5 décembre 2011 08:13