Как получить список всех пользователей базы данных
Я собираюсь получить список всех пользователей, включая пользователей Windows и sa, у которых есть доступ к определенной базе данных в MS SQL Server. В принципе, я хотел бы, чтобы список выглядел так, как показано в SQL Server Management Studio (т. Е. Список, который отображается при раскрытии [databse] -> Security -> Users ) с одним важным исключением: я не хочу видеть ‘dbo’ в списке. Скорее я хотел бы увидеть фактического пользователя, которому принадлежит база данных. Так, например, если ‘sa’ — это ‘dbo’ , в список необходимо включить ‘sa’ вместо ‘dbo’ . Еще одно замечание, которое нельзя упустить, это то, что список в SQL Server Management Studio обычно показывает пользователей Windows в дополнение к пользователям SQL, и я хотел бы, чтобы эти пользователи также были включены.
Пока что мне удалось придумать следующий запрос:
Этот запрос почти правильный, но проблема в том, что он не удовлетворяет условию ‘dbo’ .
Как я могу изменить этот запрос или использовать другой?
7 ответов
Всякий раз, когда вы «видите» что-то в графическом интерфейсе пользователя (SSMS) и думаете: «Это то, что мне нужно», вы всегда можете запустить Sql Profiler для поиска использованного запроса.
Запустите Sql Profiler. Конечно, прикрепите его к своей базе данных.
Затем щелкните правой кнопкой мыши в графическом интерфейсе (в SSMS) и выберите «Обновить».
А затем посмотрите, что «ловит» Profiler.
Я получил следующее, когда был в MyDatabase / Security / Users и нажал «обновить» в «Users».
Опять же, я не придумал предложение WHERE и LEFT OUTER JOIN, это было частью запроса SSMS. И этот запрос был написан кем-то в Microsoft (вы знаете, экспертами, которые знают продукт изнутри и снаружи, иначе говоря, экспертами), поэтому они знакомы со всеми странными «флагами» в базе данных.
Microsoft SQL Server
Получить информацию о базе данных
Как и в других системах реляционных баз данных, SQL Server предоставляет метаданные о ваших базах данных.
Это обеспечивается через стандартную схему ISO INFORMATION_SCHEMA или представления каталога sys каталогов SQL Server.
Подсчитать количество таблиц в базе данных
Этот запрос вернет число таблиц в указанной базе данных.
Следующий способ можно сделать для всех пользовательских таблиц с SQL Server 2008+. Ссылка здесь .
Получить список всех сохраненных процедур
Следующие запросы возвращают список всех хранимых процедур в базе данных с базовой информацией о каждой сохраненной процедуре:
Наиболее ROUTINE_NAME ROUTINE_SCHEMA ROUTINE_NAME , ROUTINE_SCHEMA и ROUTINE_DEFINITION .
Обратите внимание, что эта версия имеет преимущество перед выбором из sys.objects, поскольку она включает дополнительные столбцы is_auto_executed , is_execution_replicated , is_repl_serializable и skips_repl_constraints .
Обратите внимание, что вывод содержит много столбцов, которые никогда не будут связаны с хранимой процедурой.
Следующий набор запросов вернет все хранимые процедуры в базе данных, содержащие строку «SearchTerm»:
Получить список всех баз данных на сервере
Метод 1: ниже запрос будет применим для версии SQL Server 2000+ (содержит 12 столбцов)
Метод 2: ниже запроса извлекайте информацию о базах данных с большей информацией (например, состояние, изоляция, модель восстановления и т. Д.).
Примечание. Это представление каталога и будут доступны версии SQL SERVER 2005+
Способ 3. Чтобы увидеть только имена баз данных, вы можете использовать недокументированные sp_MSForEachDB
Способ 4. Ниже SP поможет вам указать размер базы данных вместе с именем базы данных, владельцем, статусом и т. Д. На сервере
Метод 5 Аналогично, ниже хранимой процедуры будут указаны имя базы данных, размер базы данных и примечания
Файлы базы данных
Отображение всех файлов данных для всех баз данных с информацией о размере и увеличении
Извлечь параметры базы данных
Следующий запрос возвращает параметры базы данных и метаданные:
Показать размер всех таблиц в текущей базе данных
Определение пути разрешения входа в Windows
Это покажет тип пользователя и путь разрешения (из которых Windows-группа получает свои разрешения).
Извлечение таблиц, содержащих известную колонку
Этот запрос вернет все COLUMNS и связанные с ними TABLES для данного имени столбца. Он предназначен, чтобы показать вам, какие таблицы (неизвестные) содержат указанный столбец (известный)
Посмотрите, используются ли функции, специфичные для предприятия
Иногда бывает полезно проверить, что ваша работа над выпуском Developer не ввела зависимости от любых функций, ограниченных Enterprise edition.
Вы можете сделать это, используя системный вид sys.dm_db_persisted_sku_features , например:
Против самой базы данных.
При этом будут перечислены используемые функции, если они есть.
Поиск и возврат всех таблиц и столбцов, содержащих заданное значение столбца
Этот скрипт, здесь и здесь , вернет все таблицы и столбцы, где существует указанное значение. Это очень важно для определения того, где определенное значение находится в базе данных. Он может облагаться налогом, поэтому предлагается сначала выполнить его в резервной / тестовой среде.
Получить все схемы, таблицы, столбцы и индексы
Вернуть список заданий агента SQL с информацией о расписании
Получение информации о действиях резервного копирования и восстановления
Чтобы получить список всех операций резервного копирования, выполняемых в текущем экземпляре базы данных:
Чтобы получить список всех операций восстановления, выполненных в текущем экземпляре базы данных: