web-dev-qa-db-fra.com

SQL Server Management Studio 2012: comment avoir des dossiers dans le projet SSMS?

J'utilise SSMS 2012 pour parler au serveur SQL 2012 et aux serveurs Azure SQL que nous utilisons. J'admets que je ne suis pas un expert SQL, j'ai donc enregistré la plupart de mes scripts SQL pour référence future. J'ai rapidement rencontré une vingtaine de scripts .SQL dans le projet SSMS et ils vivent tous sous le même dossier 'Queries'.

Existe-t-il un moyen de créer des "sous-dossiers" dans le projet afin de pouvoir organiser correctement mes scripts? Comment la plupart des autres organisent-ils leurs scripts? Je suis à peu près sûr que si cela dérange un novice comme moi, cela doit être un vrai problème pour un vrai administrateur (avec potentiellement des centaines de scripts?)

17
DeepSpace101

Enfin, les sous-dossiers ont été rendus possibles dans SSMS 2016.

Utilisateurs prudents: vous pouvez installer SSMS 2016 et continuer à utiliser l'ancien. Voir la note [1] au dessous de.

Une fois sur place, commencez à utiliser solutions au lieu de projets.


Le sous-dossier fonctionne comme ceci:

Ajout d'un sous-dossier de solution:

  1. Cliquez avec le bouton droit sur l'élément de solution (racine de l'arborescence) et dans le menu, sélectionnez Ajouter > Nouveau dossier de solution .
  2. Étape 1 fonctionne désormais également sur tous les dossiers que vous avez ajoutés.

Ajout d'un script SQL:

  • Cliquez avec le bouton droit sur un dossier et à partir de son menu Ajouter , ajoutez un fichier SQL existant ou un nouveau fichier SQL (dans la liste, recherchez le type d'élément qui a l'extension SQL ).

Vos bons vieux projets (mauvais vieux projets)

  • Vous pouvez toujours héberger des projets dans votre solution si vous les voyez bénéfiques pour certaines raisons héritées, pour l'hébergement de connexions, etc. Ajoutez simplement de nouveaux projets ou importez des projets existants dans la solution.

[1] Concernant la mise à jour:

  1. SQL Server 2008 - 2016 est officiellement pris en charge par SSMS 2016. Voir plus d'informations sur la page de téléchargement. Pour les anciennes versions, vous pouvez conserver votre ancien SSMS préféré, voir le point 2 ci-dessous.

    • le seul paramètre qui pourrait nécessiter votre attention est Options > Explorateur d'objets SQL Server > Script pour la version du serveur > (définissez la version de votre serveur)
  2. Différentes versions de SSMS cohabitent bien , c'est-à-dire que vous pouvez avoir SSMS 2008 et SSMS 2016 installés ensemble sans problèmes - testés.

7
miroxlav

Dans SSMS, si vous n’affichez pas déjà le composant logiciel enfichable Navigateur de modèles, accédez à Menu, Affichage, Explorateur de modèles (touche de raccourci Ctrl-Alt-T).

Les modèles sont chargés depuis votre machine locale, depuis ce dossier

C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlWorkbenchProjectItems\Sql

Vous pouvez ajouter des sous-dossiers comme vous le souhaitez et même les imbriquer (via l'Explorateur Windows ou SSMS). Si je ne me trompe pas, les dossiers ne sont chargés qu'une seule fois par démarrage SSMS, vous devrez donc peut-être redémarrer SSMS pour récupérer les modifications de dossier dans le système de fichiers.

p/s - Cette méthode redéfinit le navigateur de modèles dans le but d'organiser les scripts de projet!

6
孔夫子

Malheureusement, les projets SSMS ne prennent pas en charge les sous-dossiers. Si vous parlez du dossier par défaut dans lequel SQL enregistre les choses, oui, vous pouvez y créer des sous-dossiers. Ce n'est qu'un dossier sur votre disque dur. Ce dossier se trouve par défaut dans "C:\Users {nom d'utilisateur}\Documents\SQL Server Management Studio\Projects".

4
mrdenny

Le manque de sous-dossiers est certainement frustrant. Je vais essayer d'organiser mes trucs en projets séparés dans la même solution. Chacun a un dossier Queries ... Je vais nommer les projets comme je nommerais les sous-dossiers (si je pouvais les créer!).

2
Aron

Ajout à la réponse 3 ci-dessus, contourner la situation en redéfinissant les modèles dans C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlWorkbenchProjectItems\Sql.

Vous devrez ajouter des autorisations aux comptes d'utilisateurs des machines pour un contrôle total. (Cliquez avec le bouton droit sur le dossier de destination, Propriétés, sélectionnez les utilisateurs de la machine, Modifier, etc.)

Même alors, c'est comme si Steve Balmer a dirigé cette solution au col. Vous pouvez y enregistrer un fichier mais lorsqu'il est ouvert dans SSMS, il n'est pas ouvert sous le nom de ce fichier .sql, c'est un nom générique. Il y a donc tout ce rigmarole juste pour garder vos requêtes, fonctions, scripts de table, sprocs, etc. tous organisés.

Excellente réponse, mais sur Windows 8.1, cela a été exclu.

La meilleure réponse que j'ai est d'enregistrer via SSMS dans le système de fichiers qui, je pense, respectera l'imbrication des fichiers .sql. Je dois créer un projet de base de données dans Visual Studio 2013, dans lequel je peux configurer des dossiers selon leur sens pour mon flux de produits.

Mais je ne peux pas ouvrir ces requêtes via l'Explorateur de serveurs dans Visual Studio ... mais il est alors possible d'organiser les requêtes en un seul endroit si elles sont en cours de travail, Scripts SPROC, Scripts UDF, etc.

Il n'y a pas IDE pour faire ce genre de travail de projet et oui, pour reprendre les mots d'un autre répondant ici, c'est triste.

Déambuler et déclamer un peu ici ... en d'autres termes, je peux obtenir la structure de dossiers que je veux avec un projet DB dans VS 2013 mais si je veux me connecter à un serveur distant pour les tester, je dois y accéder fichier par fichier à partir de SSMS. Douleur à l'arrière ... Je veux un IDE qui fait ça.

1
user1585204

J'ai progressé en modifiant manuellement le fichier de projet SSMS pour ajouter des dossiers sous la solution. Ouvrez le fichier .ssmssqlproj dans un éditeur de texte. Recherchez les nœuds appelés LogicalFolder. Le nœud Divers est un bon modèle pour ce que vous devez faire.

Copiez simplement ces lignes et changez le nom dans le dossier que vous voulez voir. Modifiez également la valeur Type en quelque chose d'unique. Voici ce que j'ai fait.

<LogicalFolder Name="Tables" Type="4" Sorted="true">
  <Items />
</LogicalFolder>
<LogicalFolder Name="Functions" Type="6" Sorted="true">
  <Items />
</LogicalFolder>
<LogicalFolder Name="User-defined Table Types" Type="7" Sorted="true">
  <Items />
</LogicalFolder>

ASSUREZ-VOUS DE CONSERVER UNE COPIE DU FICHIER DU PROJET (.ssmssqlproj). Si vous gâchez l'édition, comme je l'ai fait plusieurs fois, le projet ne s'ouvrira pas. Ce ne sera pas si mal si vous avez installé le complément TFS et archivez vos fichiers de projet - vous pouvez simplement ignorer les modifications. Sinon, assurez-vous d'en faire une copie.

Ensuite, je crée des dossiers sous la solution pour faire correspondre les noms de dossiers logiques. Après cela, j'ai créé un script de définition de table et un script de définition de type de table défini par l'utilisateur, et les ai enregistrés dans leurs dossiers respectifs. Ils sont apparus sous le dossier "Divers" dans l'Explorateur de solutions, donc je les ai fait glisser vers les dossiers appropriés.

C'est là que les choses sont tombées en panne. Parce que, je pense, toutes les procédures stockées, les fonctions, la table et le type sont dans des fichiers qui ont une extension .sql. Étant donné que les fichiers sont .sql, ils ont été placés sous le dossier Requêtes dans l'Explorateur de solutions. Cependant, ils sont toujours physiquement dans les bons dossiers sur le disque. C'est donc un pas dans la bonne direction.

Je veux voir si l'attribut "Type" dans le fichier de projet correspond à une extension de fichier spécifique, et si je peux comprendre de quoi il s'agit. Si je peux obtenir les bonnes extensions, SSMS placera les fichiers dans le bon dossier de projet.

Je peux regarder Visual Studio pour voir comment cela fonctionne, puisque SSMS est basé sur Visual Studio, selon leur écran de démarrage.

Cependant, je suis à mi-chemin, alors peut-être que l'un d'entre vous peut comprendre le reste!

0
RonSanderson