Created
March 20, 2025 18:20
-
-
Save ViktorLychkatyi/71ec757ffa0ccfe55967d9977488cb06 to your computer and use it in GitHub Desktop.
Functions
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
--USER DEFINED FUNCTIONS (любые три из 4): | |
--1. Написать функцию, которая покажет список всех пользовательских баз данных SQL Server, и их общие размеры в байтах | |
CREATE FUNCTION TotalBDSize() | |
RETURNS TABLE | |
AS RETURN ( | |
SELECT | |
name AS "базы данных", | |
SUM(size * 8) AS "размер в байтах" | |
FROM sys.master_files | |
GROUP BY name) | |
SELECT * FROM TotalBDSize() | |
--2. Написать функцию, которая покажет список всех таблиц базы данных, название которой передано как параметр, количество записей в каждой из её таблиц, и общий размер каждой таблицы в байтах | |
CREATE FUNCTION TableDetails() | |
RETURNS TABLE | |
AS RETURN ( | |
SELECT | |
t.name AS "таблица", | |
SUM(p.rows) AS "количество записей", | |
SUM(a.total_pages * 8) AS "размер в байтах" | |
FROM sys.tables AS t | |
JOIN sys.partitions AS p ON t.object_id = p.object_id | |
JOIN sys.allocation_units AS a ON p.partition_id = a.container_id | |
WHERE p.index_id IN (0, 1) | |
GROUP BY t.name) | |
SELECT * FROM TableDetails() | |
--3. Написать функцию, которая покажет список всех полей определённой таблицы, имя которой передаётся как параметр. Если есть несколько одноимённых таблиц (в разных БД) - показать информацию по каждой таблице. Кроме названия поля указать его тип, поддержку нулевых значений и перечень всех ограничений | |
--4. Написать пользовательскую функцию, которая покажет количество присоединённых к серверу пользователей | |
CREATE FUNCTION UserstoServer() | |
RETURNS INT | |
AS BEGIN | |
DECLARE @user_count INT | |
SELECT @user_count = COUNT(DISTINCT login_name) | |
FROM sys.dm_exec_sessions | |
WHERE is_user_process = 1 | |
RETURN @user_count | |
END | |
SELECT dbo.UserstoServer() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment