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

17

J'utilise SSMS 2012 pour parler au serveur SQL 2012 et aux serveurs Azure SQL que nous utilisons. J'avoue 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?)

DeepSpace101
la source
2
J'ai un ami qui conserve tous ses scripts dans un .sqlfichier géant . De cette façon, vous n'avez qu'à garder la trace d'un seul fichier.
Max Vernon
Je connais des gens qui les gardent dans un dossier qui est synchronisé avec leur compte DropBox. Ensuite, ceux qui l'enregistrent également sur leur SkyDrive. Je ne suis pas vraiment du genre à utiliser les projets dans SSMS.
Shawn Melton
C'est là que Script Manager pourrait être utile, si vous vous y habituez. Même si je l'ai aimé, pour moi, il n'a pas cliqué. Je préfère simplement enregistrer mes scripts localement, dans certains dossiers que je sauvegarde sur DropBox. Je n'ai jamais aimé les projets SSMS aussi.
Marian
vous pouvez utiliser SQLTreeo, voici l'outil: sqltreeo.com

Réponses:

7

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

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

Une fois sur place, commencez à utiliser des solutions plutôt que des 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. L'é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 dans 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 à niveau:

  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 versions plus anciennes, 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 SSMS 2008 et SSMS 2016 peuvent être installés ensemble sans problèmes - testés.

miroxlav
la source
C'est pratique. Il convient de noter que sous le capot, SSMS stocke tous ces fichiers dans une structure de fichiers plate dans un seul répertoire, vous ne pouvez donc pas avoir un fichier du même nom dans deux dossiers différents.
Jon
@Jon - Ce n'est pas tout à fait vrai. Cela peut sembler déroutant à première vue, mais la structure des fichiers et des dossiers illustrée dans l'arborescence du projet est indépendante de l'emplacement des fichiers sur le disque. Sur le disque, il n'a pas besoin d'être plat (essayez simplement d'enregistrer de nouveaux fichiers ailleurs ...), vous pouvez les faire distribuer dans des répertoires à votre guise. En d'autres termes: conservez les fichiers dans tous les répertoires du système de fichiers et vous pouvez ensuite les ajouter dans n'importe quel dossier virtuel de l'arborescence du projet SSMS. (Si je me souviens bien, même la duplication des références est possible.) Inconvénient: vous devez organiser les fichiers deux fois - dans les répertoires et dans les dossiers du projet.
miroxlav
6

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 (raccourci clavier 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!

孔夫子
la source
Loin d'une réponse mais c'est le hack le moins kludgy suggéré jusqu'à présent! Merci pour le partage, je garderai cela ouvert encore quelques jours ...
DeepSpace101
4

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 dans "C: \ Users {nom d'utilisateur} \ Documents \ SQL Server Management Studio \ Projects" par défaut.

mrdenny
la source
2

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!).

Aron
la source
1

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, scripts SPROC, scripts UDF, etc.

Il n'y a pas d'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.

user1585204
la source
0

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, alors je les ai glissés dans 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!

RonSanderson
la source
Ça n'a pas marché pour moi. Il ne s'ouvre pas.
Soham Dasgupta