Database visualizer tools for SQL Server? - sql-server

Does anyone know of any tools that can be used to visualize data in a SQL Server database?
I'm specifically interested in a tool that can show measures such as number of rows, size of table in bytes, number of columns, using multi-dimensional graphs.
A 2D example might use a circle for each table, where the relative size of the circle indicates size in bytes, and colour indicates number of rows.

SQL Server management studio has features that do some of these things. Right click on the database, select "Reports" then "Standard Reports" and then which ever one you need.
It doesn't do graphs for all of them (but some do), but the tables it produces can be quite useful. For example, it's got "Disk usage by table", "Top transactions by age" and so on.

Related

How do I add SQL data to a visio Grid?

I'm using Visio to show about 7 different tables of data. Each table is 8rows x 5cols. The data is all available in a SQL Server.
So whilst I can access the SQL data, and it appears in my "External Data" task pane, I cannot find a way to display it in a "Grid" shape. (Or any other shape for that matter).
Is this actually possible, or am I chasing rainbows?

SSRS - OutOfMemory exception for Matrix report

I'm trying to design a Matrix report through SSRS to aggregate a column for a range of dynamic values in another column (i.e. a pivot). This data consists of just over 13 million rows, so it's a large dataset.
When doing a PIVOT on this data via T-SQL, it's able to aggregate all of these rows in about ~1min, however when getting SSRS to do the pivoting for me through a Matrix report, I'm getting an OutOfMemory exception when trying to preview the report on my PC.
The query returning the dataset itself isn't complicated, it's as simple as:
SELECT
ID
,Test_Ref
,Data_issue_indicator
FROM MyTable
Where we're trying to do the sum of Data_issue_indicator (which can be either a 1 or 0) for values in Test_Ref, in which there is a dynamic range of values to aggregate against; in other words we cannot use a standard Tablix report because the amount of columns can increase at any time should a new Test_Ref value be introduced into the dataset.
I'm using Visual Studio Enterprise 2019, and my PC is a Windows 10, i7-8850H, with 16GB memory.
Is there a suggestion on getting around this issue?
When using SSRS, its recommended to grab more data once in case of using the dataset multiple times. but when you have a larger dataset it needs to be a trade off between what you want to achieve against do you need all the data.
So in this situation i would suggest to use a procedure to restrict the amount of data that you are grabbing to the report.
I have gone through this sort of scenario, and i had to do the same, because its not the query that is timing out but the huge amount of data that is loaded to the report which fails the report.
If you have SQL server profiler , you would see the SQL executed and completed, but the report times out rendering.
Two ideas, assuming that you plan to deploy the report to a server that will have the memory to handle this, and that you'd prefer to do this processing on the report server rather than the SQL server for some reason:
Don't test the functionality on your PC in Visual Studio. Design the report, deploy it to your Report Server, and test it there to see if it works.
When testing on your PC, force it somehow to use a much smaller dataset: one just large enough to verify that the pivoting Matrix works, but small enough that your PC's memory can handle it.
Or better yet, do option 2, and then option 1.

Printing Schemas in Microsoft SQL Server Management Studio

I'm on microsoft sql server management studio 2008 10.0.1600.22
I have a number of databases (the things that have a can icon in Object Explorer), Each of these Databases contains several folders with generic dames like; Databases, Security, Server Objects, Replication, Management, and lastly SQL Server Agent. Inside the "Databases" folder, there are a large number of databases which each have their own columns/rows etc...
So for example
BLOCK1 (SQL Server ##.#.####)
[-]Databases
.[+]System Databases
.[+]Database Snapshots
.[-]GROUP1
..[+]Database Diagrams
..[-]Tables
...[+]System Tables
...[+]dbo.Table1
...[+]dbo.Table2
...[+]...
...[+]dbo.TableN
.[-]GROUP2
..[+]Database Diagrams
..[-]Tables
...[+]System Tables
...[+]dbo.Table1
...[+]dbo.Table2
...[+]...
...[+]dbo.TableN
...
.[-]GROUPN
Is there any high level built-in command or utility I can use to print out the schema for each entire 'Block'?
I want a directory or 'map' of some sort I can use to see what Tables are within each Databases within each block. Expanding each database to see the contained tables often causes Microsoft SQL Server Management Studio to freeze so having a printed secondary 'map' would be very useful in figuring out where things need to be done in a relatively LARGE network where finding out table names can take a very long time (loading/crash/freeze) or be functionally untenable.
I don't need column names; I can query the table to get that; I just need an easy way to see all the table names quickly to navigate and target queries. This is for work purposes; This RDBMs is extremely large and queries function fine against it; but expanding it to see where to target queries is impractical in object explorer due the extremely large number of components which clicking the [+] next to a database name is more likely to crash SQL server than return useful information if not taking a minute or so to load all the table names.
I know the simple but time consuming way to get this information; I'm just wondering if MS SQL Mgmt Studio 2008 might happen to have some built in function to just generate this list in plain text so I can print it out?
There are several "Object Catalog Views" in SQL Server that contain the names and types for the system objects (as well as other info). The one you may be most interested in is sys.objects, although there are others (sys.tables, sys.columns, etc.).
Here is a very generic example query:
use AdventureWorks2008
go
select *
from sys.objects as o
order by o.type
For more info, see the documentation.
nvm just did it by looping
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES (nolock)
WHERE TABLE_TYPE = 'BASE TABLE'
order by TABLE_NAME asc
and putting it in charts. this is more an issue of finding a better file format to store it in because the excel schema is 175MB large and would be 313k+ pages if physically printed. This initiative needs to re-examined from another angle. question closed

SQL Server need to partition data, but only have standard edition

Is there a way that I can in code (Sproc ,etc) distribute the data for a table into multiple filegroups without actually having SQL Server partitioning available (Only have Standard Edition)? I wanted to be able to breakout my FileStream data into different "Partitions", but without an Enterprise license I can't actually use the partitioning functionality.
Any suggestions would be greatly appreciated.
Thanks,
S
You can distribute your data into different databases and join them with views. The tricky part of that will be to keep the views updated as you add/remove data.
You need to do this "partition" on a logical key (like a calendar date) where each DB has data within a certain range. If you cluster on this field, the query analyzer will be able to determine which DB to pull data from without issue.
At my workplace we are using this technique for a very large (multi-billion row) data set that we get monthly additions to and it works great.

How to use 3rd dimension in MDX query (ON PAGES syntax)

I have a problems with 3rd dimension in MDX Query (on MS SQL Server 2005). I can use 3rd dimension in Visual Basic (I have a cube there, using browser I can make 3 dim. queries -- owing to ON PAGES). I snooped it via MS SQL Profiler (it records databases queries). But when I tried to put the query into MS SQL SERVER, only thing what I've received was:
Executing the query ...
Obtained object of type: Microsoft.AnalysisServices.AdomdClient.CellSet
Formatting.
Results cannot be displayed for cellsets with more than two axes.
Execution complete
I tried a few different ways to implement query, but this^ answer, was an only answer from a server.
The question is: What I need to do to use third dim in my OLAP?
When you query Analysis Services with SQL Server Management Studio (SSMS) you get an ADOMD.NET Cellset object. This object represents your query results in a multidimensional fashion, laying out the information in several axes: Axis 0 for columns, axis 1 for rows, axis 2 for pages, etc.
Although your query may be correct with three axes, SSMS can only render bidimensional restults, hence the error message you get. You need to build an application using ADOMD.NET to consume the cellset, or use a third party tool.
You say you "put the query into MS SQL SERVER" - what exactly do you mean? Did you try the cube browser that comes with Analysis Services? It's pretty rubbish.
I think the problem is as simple as the error message you got - "Results cannot be displayed". In other words, the viewing software can show tables (i.e. 2D info) but doesnt have a way to display 3D info (whether it be in multiple tables, or whatever).
You need to find software that can present cube data more elaborately.

Resources