powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выбрать имена всех таблиц, созданных назначенным пользователем базы данных
3 сообщений из 3, страница 1 из 1
выбрать имена всех таблиц, созданных назначенным пользователем базы данных
    #39887231
iamsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Итак, я есть пользователь-админ Lnk, хочу выбрать имена таблиц, созданных мной. Я пишу запрос:

Код: sql
1.
select * from sys.database_principals 


и в нем среди значений столбца name нет меня, то есть нет Lnk. Далее, сделав запрос

Код: sql
1.
select * from sys.database_principals


я вижу, что для всех таблиц, которые я создал в некоторой базе, в principal_id стоит null (короче говоря, 0). Из предыдущего запроса узнаю, что principal_id = 0 соответствует name = 'public'. Но почему public, ведь это вообще роль, а не пользователь? Пользователь - Lnk, в данный момент я сижу под ним, базу данных я создавал тоже будучи им, так почему, когда я пишу

Код: sql
1.
2.
3.
4.
select * from sys.objects
where type = 'U'
and
principal_id = (select principal_id from sys.database_principals where name = user_name())


мне вообще ничего не выводит? Получается, что этот пользователь вообще ничего не создал? но ведь это не так. Где ошибка и как ее исправить?
...
Рейтинг: 0 / 0
выбрать имена всех таблиц, созданных назначенным пользователем базы данных
    #39887235
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamsql
Итак, я есть пользователь-админ Lnk...и в нем среди значений столбца name нет меня, то есть нет Lnk
Члены серверной роли sysadmin отображаются в БД на dbo.
...
Рейтинг: 0 / 0
выбрать имена всех таблиц, созданных назначенным пользователем базы данных
    #39887246
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamsql
в principal_id стоит null (короче говоря, 0)
0 не равно null, во первых.

Во вторых, если в principal_id стоит null, значит, объект создал владелец его схемы. Что написано в документации по sys.objects

Владельца схемы можно посмотреть в sys.schemas

Если вы админ, то ваш user_name() = "dbo"

Запрос, соответственно, должен быть более сложный, нужно учитывать в варианта, с principal_id is null, и principal_id is not null
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / выбрать имена всех таблиц, созданных назначенным пользователем базы данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]