Microsoft SQL Operations Studio cz.2 – Widgety

Tak jak pisałem w pierwszej części artykułu dotyczącego Microsoft SQL Operations Studio możemy dowolnie modyfikować wygląd elementów wyświetlanych na ekranie. Modyfikowanie nie jest jednak takie proste jakby się zdawało 🙂

DASHBOARDY
Na początek pokażę jak wyświetlić listę backupów baz na naszym serwerze. Wszystkie wyświetlane widgety są zapisywane w pliku konfiguracyjnym użytkownika (User Preferences). Aby go wyświetlić należy skorzystać ze skrótu klawiszowego CTRL-, (przecinek).

Nasze widgety są zapisane w tzn DASHBOARD’ach więc musimy w oknie wyszukiwania u góry wpisać „dashboard”

W programie mamy dwa rodzaje dashboarda : dashboard.server.widgets oraz dashboard.database.widgets
Pierwszy odpowiada za widgety dotyczące całej instancji (serwera), a druga dotyczy widgetów baz danych.
Modyfikując odpowiedni modyfikujemy wygląd panelów programu odpowiednio dla serwera lub bazy.
Aby zmodyfikować plik parametrów odnajdujemy w pliku parametrów np obszar „dashboard.server.widgets” i klikamy w rysunek ołówka 🙂

Po prawej stronie ekranu zostanie podświetlony blok odpowiedzialny za ten zakres widzetów. Służy on do wprowadzania modyfikacji.

Składnia parametrów wygląda następująco

"dashboard.server.widgets": [
   {
       widget 1
   },
   {
       widget 2
   }
]

Aby dodać nowy widget musimy dopisać go (w odpowiednim miejscu) jako kolejny oddzielając od poprzedniego przecinkiem.

DASHBOARD SERVER WIDGET

LISTA BACKUPÓW

Na początek pokażę jak wyświetlić listę backupów baz na naszym serwerze. Widget ten spisujemy w obszarze „dashboard.server.widgets”. Przykładowo aby uruchomić widget wyświetlający prostą listę backupów naszych baz wpisujemy:

{"widget": {
         "backup-history-server-insight": null
     }
}

lub bardziej rozbudowany gdzie mozemy okreslić jego wielkość i nazwę

{"name": "Backup History",
      "gridItemConfig": {
           "sizex": 1,
           "sizey": 1
       },
       "widget": {
          "backup-history-server-insight": null
       }
}

Po wprowadzeniu zmian zapisujemy je za pomocą skrótu CTRL-S. Następnie zamykamy okno oraz okno dashboarda (to pierwsze z „prędkościomierzem”)

Następnie uruchamiamy ponownie ekran dahsboard’a

Na ekranie pojawi się nowy ekranik pokazujący informacje o backupach naszych baz:

Klikając w ikonkę w prawym górnym rogu i uruchamiając opcję „Run Query” uruchomimy zapytanie ukryte pod danym widgetem

Klikając w opcję „Show Detail” możemy dowiedzieć się więcej o backupach

TASKS

{"name": "Tasks",
    "widget": {
        "tasks-widget": {}
    },
        "gridItemConfig": {
        "sizex": 1,
        "sizey": 1
    }
}

LISTA BAZ

{"name": "Databases",
    "gridItemConfig": {
        "sizex": 1,
        "sizey": 1
    },
    "widget": {
        "explorer-widget": {}
    }
}

WIELKOŚĆ BAZ

{"name": "All database size",
    "gridItemConfig": {
        "sizex": 3,
        "sizey": 1
    },
    "widget": {
        "all-database-size-server-insight": null
    }
} 

Nie wiem czemu to nic nie pokazuje (ale może z czasem to rozgryzę :))

ILOŚĆ SESJI
Wcześniej omówiłem przygotowane przez autorów programu SQL Operations Studio widget, ale można również dodać stworzony przez nas osobiście 🙂
Tu sprawy się komplikują, bo trzeba go samemu zbudować.
W tym celu budujemy zapytanie zwracające ilość aktywnych sesji

SELECT count(session_id) as [Active Sessions]
FROM sys.dm_exec_sessions
WHERE status = 'running'

Zapisujemy je w folderze na dysku (w naszym przykładzie to C:\SQLData\SQLQuery\ActiveSession.sql)

następnie budujemy widget

{
    "name": "Active Session",
    "gridItemConfig": {
        "sizex": 1,
        "sizey": 1
        },
            "widget": {
                "insights-widget": {
                    "type": {
                        "count": {
                            "dataDirection": "vertical",
                            "dataType": "number",
                            "legendPosition": "none",
                            "labelFirstColumn": false,
                            "columnsAsLabels": false
                        }
                    },
                    "queryFile": "c:\\SQLData\\SQLQuery\\ActiveSession.sql"
                }
            }
        }
    }
}

INSTANCE SIZE

Query:
use master
SELECT sum((size * 8)/1024) as MB
FROM master.sys.master_files
WHERE state = 0
AND type_desc IN ('LOG', 'ROWS') AND DB_NAME(database_id) = 'tempdb'

{
    "name": "Instance Size Without TempFile",
    "gridItemConfig": {
        "sizex": 1,
        "sizey": 1
    },
    "widget": {
        "insights-widget": {
            "type": {
                "count": {
                    "dataDirection": "vertical",
                    "dataType": "number",
                    "legendPosition": "none",
                    "labelFirstColumn": false,
                    "columnsAsLabels": false
                }
            },
            "queryFile": "c:\\SQLData\\SQLQuery\\Instance_size_wihout_temp.sql"
        }
    }
}

SIZE OF TABLES

SELECT TOP 10 CASE WHEN (GROUPING(sob.name)=1) THEN 'All_Tables'
ELSE ISNULL(sob.name, 'unknown') END AS Table_name,
SUM(sys.length)/1024 AS KByte_Length
FROM sysobjects sob, syscolumns sys
WHERE sob.xtype='u' AND sys.id=sob.id
GROUP BY sob.name
WITH CUBE
order by SUM(sys.length) desc

{
            "name": "Size of TOP 10 NoSystem Tables",
            "gridItemConfig": {
                "sizex": 2,
                "sizey": 1
            },
            "widget": {
                "insights-widget": {
                    "type": {
                        "horizontalBar": {
                            "dataDirection": "vertical",
                            "dataType": "number",
                            "legendPosition": "none",
                            "labelFirstColumn": false,
                            "columnsAsLabels": false
                        }
                    },
                    "queryFile": "c:\\SQLData\\SQLQuery\\TableSizeKB.sql"
                }
            }
        }

DASHBOARD DATABASE WIDGET

TASKS

        {
            "name": "Tasks",
            "gridItemConfig": {
                "sizex": 1,
                "sizey": 1
            },
            "widget": {
                "tasks-widget": {}
            }
        }

TABELE

        {"name": "Tables",
            "gridItemConfig": {
                "sizex": 1,
                "sizey": 1
            },
            "widget": {
                "explorer-widget": {}
            }
        }

TOP 5 TABLE SPACE USAGE

{
            "name": "TOP 5 Table space usage",
            "gridItemConfig": {
                "sizex": 2,
                "sizey": 2
            },
            "widget": {
                "table-space-db-insight": null
            }
}

Tu też nie wiem czemu nie wyświetla wielkości w MB (jeszcze to rozgryzę :))

Ten wpis został opublikowany w kategorii SQL OS i oznaczony tagami . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz