Bueno, afortunadamente SQL Server le da una pista sobre como hacer esto. hacer esto,
- iniciar una traza de SQL Server y abrir la actividad que está haciendo (filtro por su ID de inicio de sesión si usted no está solo y establecer el nombre de la aplicación a Microsoft SQL Server Management Studio), pausa rastrear y descartar cualquier resultado que haya grabado hasta ahora;
- Luego, haga clic derecho en una tabla y seleccione una propiedad en el menú emergente;
- iniciar el rastreo nuevamente;
- Ahora en el estudio de SQL Server Management seleccione el elemento de propiedad de almacenamiento a la izquierda;
Pausa la traza y echar un vistazo a lo que TSQL es generado por Microsoft.
En el probablemente la última consulta, verá una sentencia A partir de exec sp_executesql N'SELECT
al copiar el código que se ejecuta a Visual Studio se dará cuenta de que este código genera todos los datos de los ingenieros de Microsoft utilizan para rellenar la ventana de propiedades .
cuando haces modificaciones moderadas a esa consulta se llega a algo como esto:
SELECT
SCHEMA_NAME(tbl.schema_id)+'.'+tbl.name as [table], --> something I added
p.partition_number AS [PartitionNumber],
prv.value AS [RightBoundaryValue],
fg.name AS [FileGroupName],
CAST(pf.boundary_value_on_right AS int) AS [RangeType],
CAST(p.rows AS float) AS [RowCount],
p.data_compression AS [DataCompression]
FROM sys.tables AS tbl
INNER JOIN sys.indexes AS idx ON idx.object_id = tbl.object_id and idx.index_id < 2
INNER JOIN sys.partitions AS p ON p.object_id=CAST(tbl.object_id AS int) AND p.index_id=idx.index_id
LEFT OUTER JOIN sys.destination_data_spaces AS dds ON dds.partition_scheme_id = idx.data_space_id and dds.destination_id = p.partition_number
LEFT OUTER JOIN sys.partition_schemes AS ps ON ps.data_space_id = idx.data_space_id
LEFT OUTER JOIN sys.partition_range_values AS prv ON prv.boundary_id = p.partition_number and prv.function_id = ps.function_id
LEFT OUTER JOIN sys.filegroups AS fg ON fg.data_space_id = dds.data_space_id or fg.data_space_id = idx.data_space_id
LEFT OUTER JOIN sys.partition_functions AS pf ON pf.function_id = prv.function_id
Ahora la consulta no es perfecto y que podría actualizarla para satisfacer otras preguntas que pueda tener, el punto es, puede utilizar el conocimiento de microsoft para acceder a la mayoría de las preguntas que tiene al ejecutar los datos que le interesan y rastrear el TSQL generado utilizando el generador de perfiles.
Me gustaría pensar que los ingenieros de MS saben cómo funciona SQL Server y generará TSQL que funciona en todos los elementos con los que puede trabajar utilizando la versión en SSMS que está utilizando, por lo que es bastante bueno en una gran variedad de lanzamientos prerviouse, actual y futuro.
Y recuerde, no solo copie, trate de entenderlo bien, de lo contrario podría terminar con la solución incorrecta.
Walter
gracias marc_s, eso debería ser más fácil de manejar – kristof
¿Alguna idea de por qué está filtrando tablas con un nombre que empiece con "dt"? He visto este guión en toda la red, pero no hay explicación sobre ese criterio. ¿Todos estamos siendo trolled? – Skaue
@Skaue: si instala la funcionalidad "Diagrama de base de datos" en una base de datos suya, entonces tendrá algunas tablas como 'dtProperties', etc. ya que esas son tablas de "sistema", no quiero informar sobre ellas. –