SQL Server Management Studio 2012: ¿Cómo tener carpetas en el proyecto SSMS?

17

Estoy usando SSMS 2012 para hablar con el servidor SQL 2012 y los servidores Azure SQL que usamos. Admito que no soy un experto en SQL, así que he guardado la mayoría de mis scripts SQL para referencia futura. Rápidamente me encontré con unos 20 scripts .SQL en el proyecto SSMS y todos viven bajo la misma carpeta 'Consultas'.

¿Hay alguna forma de crear "subcarpetas" en el proyecto para poder organizar mis scripts correctamente? ¿Cómo la mayoría de la gente mantiene sus guiones organizados? Estoy bastante seguro de que si esto molesta a un novato como yo, debe ser un problema real para el administrador real (¿potencialmente con cientos de scripts?)

DeepSpace101
fuente
2
Tengo un amigo que guarda todos sus guiones en un .sqlarchivo gigante . De esa forma, solo tendrá que realizar un seguimiento del archivo único.
Max Vernon
Sé de personas que simplemente los mantienen en una carpeta que está sincronizada con su cuenta de DropBox. Luego, los que lo guardan en su SkyDrive también. Realmente no soy de los que usan los proyectos en SSMS.
Shawn Melton el
Aquí es donde Script Manager podría ser útil, si te acostumbras. Aunque me gustó, para mí no hizo clic. Prefiero guardar mis scripts localmente, en algunas carpetas de las que realizo una copia de seguridad en DropBox. Nunca me gustaron los proyectos de SSMS, también.
Marian
puede usar SQLTreeo, aquí está la herramienta: sqltreeo.com

Respuestas:

7

Finalmente, las subcarpetas fueron posibles en SSMS 2016.

Usuarios cautelosos: puede instalar SSMS 2016 y seguir usando uno antiguo. Ver nota a [1]continuación.

Una vez allí, comience a usar soluciones en lugar de proyectos .


La subcarpeta funciona así:

Agregar subcarpeta de solución:

  1. Haga clic con el botón derecho en el elemento de solución (raíz del árbol) y en el menú seleccione Agregar > Nueva carpeta de soluciones .
  2. El paso 1 ahora también funciona en cualquier carpeta que haya agregado.

Agregar script SQL:

  • Haga clic con el botón derecho en cualquier carpeta y, desde su menú Agregar , agregue un archivo SQL existente o un nuevo archivo SQL (en la lista, busque el tipo de elemento que tiene la extensión SQL).

Tus buenos proyectos viejos (proyectos viejos malos)

  • Todavía puede alojar proyectos en su solución si los ve beneficiosos por algunos motivos heredados, para alojar conexiones, etc. Simplemente agregue proyectos nuevos o importe los existentes a la solución.

[1] En cuanto a la actualización:

  1. SQL Server 2008-2016 es oficialmente compatible con SSMS 2016. Consulte más información en la página de descarga. Para versiones anteriores, puede mantener su SSMS antiguo favorito, consulte el punto 2 a continuación.

    • la única configuración que podría requerir su atención es Opciones > Explorador de objetos de SQL Server > Script para la versión del servidor > (configure la versión del servidor)
  2. Las diferentes versiones de SSMS conviven bien , es decir, puede tener SSMS 2008 y SSMS 2016 instalados juntos sin problemas: probado.

miroxlav
fuente
Esto es útil. Vale la pena señalar que, bajo el capó, SSMS está almacenando todos estos archivos en una estructura de archivos planos en un solo directorio, por lo que no puede tener un archivo con el mismo nombre en dos carpetas diferentes.
Jon
@ Jon - Esto no es del todo cierto. Puede parecer confuso a primera vista, pero la estructura de archivos y carpetas que se muestra en el árbol del proyecto es independiente de la ubicación de los archivos en el disco. En el disco, no es necesario que sea plano (solo intente guardar archivos nuevos en otro lugar ...), puede distribuirlos en directorios como desee. En otras palabras: mantenga los archivos en cualquier directorio del sistema de archivos y luego puede agregarlos a cualquier carpeta virtual en el árbol del proyecto SSMS. (Si no recuerdo mal, incluso es posible la duplicación de referencias). Desventaja: debe organizar los archivos dos veces: en directorios y en carpetas de proyectos.
miroxlav
6

En SSMS, si aún no está mostrando el complemento Explorador de plantillas, vaya a Menú, Ver, Explorador de plantillas (tecla de acceso rápido Ctrl- Alt- T).

Las plantillas se cargan desde su máquina local, desde esta carpeta

C: \ Archivos de programa (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ SqlWorkbenchProjectItems \ Sql

Puede agregar subcarpetas como desee e incluso anidarlas (a través del Explorador de Windows o SSMS). Si no me equivoco, las carpetas se cargan solo una vez por inicio de SSMS, por lo que es posible que deba reiniciar SSMS para recoger los cambios de carpeta del sistema de archivos.

p / s: este método reutiliza el navegador de plantillas con el fin de organizar los scripts del proyecto.

孔夫子
fuente
Lejos de ser una respuesta, ¡pero este es el truco menos grosero sugerido hasta ahora! Gracias por compartir, mantendré esto abierto unos días más ...
DeepSpace101
4

Lamentablemente, los proyectos SSMS no admiten subcarpetas. Si está hablando de la carpeta predeterminada en la que SQL guarda cosas, sí, puede crear subcarpetas allí. Eso es solo una carpeta en su disco duro. Esa carpeta se encuentra en "C: \ Usuarios {nombre de usuario} \ Documentos \ SQL Server Management Studio \ Proyectos" de forma predeterminada.

mrdenny
fuente
2

La falta de subcarpetas es ciertamente frustrante. Voy a intentar organizar mis cosas en proyectos separados en la misma solución. Cada uno tiene una carpeta de Consultas ... Voy a nombrar los proyectos de la forma en que nombraría las subcarpetas (¡si pudiera crearlas!).

Aron
fuente
1

Agregando a la Respuesta 3, más arriba, trabajando alrededor de la situación al re-diseñar plantillas en C: \ Archivos de programa (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ SqlWorkbenchProjectItems \ Sql.

Tendrá que agregar permisos a las cuentas de usuario de las máquinas para Control total. (Haga clic derecho en la carpeta de destino, Propiedades, seleccione los usuarios de la máquina, Editar, etc.)

Incluso entonces es como Steve Balmer dirigió esta solución en el pase. Puede guardar un archivo allí, pero cuando se abre en SSMS, no se abre con el nombre de ese archivo .sql, es un nombre genérico. Entonces, existe todo este rigmarole solo para mantener sus consultas, funciones, scripts de tabla, sprocs, etc., todo organizado.

Gran respuesta, pero en Windows 8.1, se impidió.

La mejor respuesta que tengo es guardar a través de SSMS en el sistema de archivos que creo que respetará la anidación de los archivos .sql. Tengo que crear un Proyecto de base de datos en Visual Studio 2013, en el que puedo configurar carpetas según tengan sentido para el flujo de mi producto.

Pero no puedo abrir estas consultas a través de Server Explorer en Visual Studio ... sin embargo, es posible organizar consultas en un solo lugar si están en el trabajo, scripts SPROC, scripts UDF, etc.

No hay IDE para hacer este tipo de trabajo de proyecto y sí, en palabras de otro encuestado aquí, eso es triste.

Divagando y despotricando aquí un poco ... en otras palabras, puedo obtener la estructura de carpetas que quiero con un Proyecto DB en VS 2013, pero si quiero iniciar sesión en un servidor remoto para probarlas, tengo que acceder a ellas archivo por archivo desde SSMS Dolor en la parte de atrás ... Quiero un IDE que haga esto.

usuario1585204
fuente
0

Progresé editando manualmente el archivo del proyecto SSMS para agregar carpetas debajo de la solución. Abra el archivo .ssmssqlproj en un editor de texto. Busque los nodos llamados LogicalFolder. El nodo Varios es un buen modelo para lo que necesita hacer.

Simplemente copie estas líneas y cambie el nombre a la carpeta que desea ver. También cambie el valor de Tipo a algo único. Aquí esta lo que hice.

<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>

ASEGÚRESE DE GUARDAR UNA COPIA DEL ARCHIVO DEL PROYECTO (.ssmssqlproj). Si arruinas la edición, como hice varias veces, el proyecto no se abrirá. Esto no será tan malo si ha instalado el complemento TFS y está revisando los archivos de su proyecto; simplemente puede descartar los cambios. Pero si no, asegúrese de hacer una copia.

Luego creo carpetas bajo la solución para que coincidan con los nombres de las carpetas lógicas. Después de eso, creé un script de definición de tabla y un script de definición de tipo de tabla definido por el usuario, y los guardé en sus carpetas respectivas. Aparecieron debajo de la carpeta "Varios" en el explorador de soluciones, por lo que los arrastré a las carpetas correspondientes.

Aquí es donde las cosas se rompieron. Porque, creo, todos los procedimientos almacenados, funciones, tabla y tipo están en archivos que tienen una extensión .sql. Debido a que son archivos .sql, se colocaron en la carpeta Consultas en el explorador de soluciones. Sin embargo, todavía están físicamente en las carpetas correctas en el disco. Entonces ese es un paso en la dirección correcta.

Quiero ver si el atributo "Tipo" en el archivo del proyecto corresponde con una extensión de archivo específica, y si puedo averiguar cuáles son. Si puedo obtener las extensiones correctas, entonces SSMS colocará los archivos en la carpeta correcta del proyecto.

Puedo mirar Visual Studio para ver cómo funciona, ya que SSMS se basa en Visual Studio, de acuerdo con su pantalla de presentación.

Sin embargo, estoy a medio camino, ¡así que quizás uno de ustedes pueda descubrir el resto!

RonSanderson
fuente
Esto no funcionó para mí. No se abre.
Soham Dasgupta