Created
March 2, 2025 20:57
-
-
Save GhostRJY/300d5dd501b14c2e279484e945a975ae 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
--USER DEFINED FUNCTIONS: | |
--1. Написать функцию, которая покажет список всех пользовательских баз данных SQL Server, и их общие размеры в байтах | |
CREATE OR ALTER FUNCTION sizeOfBases() | |
RETURNS @listOfBases TABLE(file_name nvarchar(50), size_of_file float) | |
AS | |
BEGIN | |
INSERT @listOfBases | |
SELECT s.name [название файла], s.size/128.0 [размер Мб] | |
FROM sys.master_files s | |
WHERE s.file_id ='1' | |
RETURN | |
END | |
SELECT * FROM sizeOfBases() | |
--2. Написать функцию, которая покажет список всех таблиц базы данных, название которой передано как параметр, | |
--количество записей в каждой из её таблиц, и общий размер каждой таблицы в байтах | |
--3. Написать функцию, которая покажет список всех полей определённой таблицы, имя которой передаётся как параметр. Если есть | |
--несколько одноимённых таблиц (в разных БД) - показать информацию по каждой таблице. Кроме названия поля указать его тип, | |
--поддержку нулевых значений и перечень всех ограничений | |
CREATE OR ALTER FUNCTION ShowTableFields(@tableName nvarchar(128)) | |
RETURNS TABLE | |
AS | |
RETURN | |
( | |
SELECT | |
col.name [Название столбцов], | |
type.name [Тип], | |
col.is_nullable [может быть NULL], | |
cons.constraint_type [тип связи] | |
FROM sys.columns col | |
JOIN sys.types type ON col.user_type_id = type.user_type_id | |
LEFT JOIN | |
(SELECT | |
tc.table_name, | |
kcu.column_name, | |
tc.constraint_type | |
FROM | |
information_schema.table_constraints tc | |
JOIN | |
information_schema.key_column_usage kcu | |
ON tc.constraint_name = kcu.constraint_name | |
) cons ON cons.column_name = col.name | |
WHERE | |
OBJECT_NAME(col.object_id) = @tableName | |
) | |
GO | |
USE Warehouse | |
SELECT * FROM ShowTableFields('Product') | |
--4. Написать пользовательскую функцию, которая покажет количество присоединённых к серверу пользователей | |
CREATE OR ALTER FUNCTION ConnectedUsersCount() | |
RETURNS INT | |
AS | |
BEGIN | |
DECLARE @userCount int | |
SELECT @userCount = COUNT(*) | |
FROM sys.dm_exec_sessions | |
WHERE is_user_process = 1 -- Учитываем только пользовательские сессии | |
RETURN @userCount | |
END | |
SELECT ConnectedUserCount() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment