Created
March 4, 2025 21:34
-
-
Save devitfro/aabe87100a322332584faf04926e81d7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 1. Написать функцию, которая покажет список всех пользовательских баз данных SQL Server, и их общие размеры в байтах | |
CREATE FUNCTION GetUserDBSize() | |
RETURNS TABLE | |
AS RETURN ( | |
SELECT | |
name AS DatabaseName, | |
SUM(size * 8 * 1024) AS TotalSizeBytes | |
FROM sys.master_files | |
WHERE type IN (0) | |
AND database_id > 4 | |
GROUP BY name | |
) | |
SELECT * FROM GetUserDBSize() | |
-- 2. Написать функцию, которая покажет список всех таблиц базы данных, название которой передано как параметр, | |
-- количество записей в каждой из её таблиц, и общий размер каждой таблицы в байтах | |
CREATE FUNCTION GetConnectedCount() | |
RETURNS INT | |
AS BEGIN | |
DECLARE @UserCount INT | |
SELECT @UserCount = COUNT(*) | |
FROM sys.dm_exec_sessions | |
WHERE is_user_process = 1; | |
RETURN @UserCount | |
END | |
-- 3. Написать функцию, которая покажет список всех полей определённой таблицы, имя которой передаётся как параметр. Если есть | |
-- несколько одноимённых таблиц (в разных БД) - показать информацию по каждой таблице. Кроме названия поля указать его тип, | |
-- поддержку нулевых значений и перечень всех ограничений | |
CREATE FUNCTION GetTableColumn(@TableName NVARCHAR(255)) | |
RETURNS TABLE | |
AS RETURN | |
( | |
SELECT | |
t.TABLE_CATALOG AS database_name, | |
t.TABLE_SCHEMA AS schema_name, | |
t.TABLE_NAME AS table_name, | |
c.COLUMN_NAME AS column_name, | |
c.DATA_TYPE AS data_type, | |
c.IS_NULLABLE AS is_nullable, | |
STRING_AGG(CONSTRAINT_TYPE, ', ') AS constraints | |
FROM INFORMATION_SCHEMA.COLUMNS c | |
LEFT JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME | |
AND c.TABLE_SCHEMA = t.TABLE_SCHEMA | |
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu ON c.COLUMN_NAME = kcu.COLUMN_NAME | |
AND c.TABLE_NAME = kcu.TABLE_NAME | |
AND c.TABLE_SCHEMA = kcu.TABLE_SCHEMA | |
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc ON kcu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME | |
AND kcu.TABLE_NAME = tc.TABLE_NAME | |
WHERE c.TABLE_NAME = @TableName | |
GROUP BY t.TABLE_CATALOG, t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.DATA_TYPE, c.IS_NULLABLE | |
) | |
SELECT * FROM GetTableColumn('Category') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment