¿Hay una manera simple de enumerar el tamaño de cada tabla en cada base de datos en un servidor MSSQL?
He usado una consulta en sys.tables para obtener resultados para una sola base de datos, pero tenemos> 100 bases de datos por servidor, por lo que sería una forma de obtener los mismos resultados pero para todas las bases de datos.
Actualmente tengo que crear una lista temporal de bases de datos de master.sys.databases, y luego iterar sobre eso con un cursor, construir una consulta e insertar los resultados en una tabla temporal con EXEC sp_executeSQL @SQLString
.
sql-server
Cilíndrico
fuente
fuente
Respuestas:
Si desea obtener esto en todo su entorno, para todas sus bases de datos ... y no le importa usar PowerShell ... Necesitará ejecutar esto desde una máquina que al menos tenga instalado SQL Server 2008 Management Studio.
Como se etiqueta como las
DataSpaceUsed
salidas del objeto SMO en "KB", puede modificar esto para que sea la medida de su elección simplemente colocando la referencia abreviada para ello. Así que si quería "MB":$_.DataSpaceUsed/1MB
.En la función
([string[]]$server)
, los corchetes "[]" significan que el parámetro acepta una matriz de objetos. Entonces, si tiene sus servidores listados en un archivo, puede llamar a la función de esta manera:Prefiero usar
Out-GridView
inicialmente para revisar el resultado, y se copia fácilmente directamente en Excel para mí. También puede enviar esto a los otros formatos compatibles de PowerShell si lo desea.Ejemplo con captura de pantalla, también puede enumerar los servidores:
fuente
Tomado de Stack-Overflow: Obtenga el tamaño de todas las tablas en la base de datos
fuente
Usé una combinación de respuestas anteriores:
fuente
Puede intentar usar
sp_msforeachdb
un par de advertencias con esto.Dicho esto, lo he usado con éxito durante varios años.
Básicamente hace un cursor y un reemplazo en el? con el nombre de DB.
También puedes probar la versión de reemplazo de Aaron Bertrand. No lo he probado yo mismo, pero se supone que es mejor.
fuente
Lo siguiente resolverá su pregunta:
fuente