powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Владелец объекта в ASE
19 сообщений из 19, страница 1 из 1
Владелец объекта в ASE
    #32945544
Разработчики нам дают базы, где владельцами являются логины, заведенные на их серверах, у нас их нет. При поднятии дампа на другом сервере, где нет логина владельца объекта, выдается сообщение типа:

Object 'CheckUNNClass' in database 'CLEARING' is owned by login 'ADMIN' who does not exist in this server.

В таблице sysobjects на таких объектах в колонке loginame прописаны отсутствующие логины, на остальных объектах - NULL

Что-то я не нашел, штатных средств смены владельца объекта. В Central'е есть только Creator.

Подскажите, как сменить владельца?
И где еще, кроме как в указанной ситуации с дампом отсутствие логина владельца может доставить неудобства?


------------------
ASE 12.0 EBF11541
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32946642
Vlad_5181
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из документации:
//
Системные администраторы могут использовать команду setuser для
создания объектов, владельцами которых будет другой пользователь.
Однако системные администраторы работают вне системы DAC-
полномочий, поэтому им не нужно выполнять команду setuser для
получения полномочий других пользователей. Команда setuser
действует до выполнения другой команды setuser, до смены текущей
базы данных или до выхода пользователя из системы.
Синтаксис команды:
setuser ["имя_пользователя"]
где имя_пользователя – это допустимый пользователь в базе данных,
за которого необходимо себя выдать.
Чтобы восстановить свои исходные идентификационные сведения,
используйте команду setuser без параметра имя_пользователя.
В следующем примере показано, как владелец базы данных может
предоставить пользователю Joe полномочие на чтение таблицы
authors, владельцем которой является пользователь Mary:
setuser "mary"
grant select on authors to joe
setuser /*восстанавливает исходные
идентификационные сведения*/
//

Сменить владельца можно путем пересоздания объекта. SA входит под владельцем, выгружает объект, затем создает под SA.

Разработчики, ИМХО, уроды. Создавать объекты при разработке должен DBA, который в базе dbo. Исключение - при обслуживании одной фирмой нескольких независимых предприятий, данные которых находятся в одной базе или др. совсем экзотические вещи.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32946794
Так что, мне все объекты пересоздавать вручную? :((
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32947221
а может у кого-то есть опыт изменения в sysobjects uid ?

:-)
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32947754
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32947876
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что uid означает пользователя в базе, т.е. при поднятиии базы из дампа пользователь создасться со всеми остальными данными. За связь с логинами отвечает только текстовое поле loginame - его значение можно совершенно спокойно поменять простым update, (allow updates to system tables должен быть 1). Безопаснее всего сбросить его в NULL.

Vlad_5181Создавать объекты при разработке должен DBA, который в базе dbo

Скорее всего они так и делают, только заходят не под sa, а под другой учеткой - которая имеет алиас dbo на требуемую базу, при этом в loginame пишется имя логина, а uid и будет uid dbo.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32947903
_Sania
За связь с логинами отвечает только текстовое поле loginame


ой ли? а рази suid с master.syslogins не увязан?

типа такого

Код: plaintext
1.
2.
3.
4.
5.
6.
select so.name,so.loginame,so.uid,
sl.name
from sysobjects so,sysusers su,master..syslogins sl
where so.uid=su.uid
and su.suid=sl.suid
order by so.name
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948241
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Трава у дома ой ли? а рази suid с master.syslogins не увязан?

Я такого и не писал:
_Saniauid означает пользователя в базе

Или не знаешь в чем разница между suid и uid?
uid с master..syslogins не связан, он связан с sysusers в базе.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948291
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Алексей Кривеня

Что бы можно было отвечать более предметно, лучше привести
результат запроса
select name,uid,loginame from sysobjects where name = 'имя_проблемного_объекта'

тогда будет яснее, я думаю uid будет равен 1.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948387
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наилучшим решением будет внесение в master..syslogins учетки с именем 'ADMIN' и suid взятым из запроса

select suid,uid,gid,name from sysusers where uid = 1

Тогда и при последующих поднятиях дампов никакой ругани не будет.

Или как вариант можно в sysusers поменять suid
(это нужно если создатель базы имеет suid, которого нет в master..syslogins, в этом случае sp_changedbowner скорее всего не отработает)

update sysusers set suid = 1 where uid = 1

Тогда владельцем базы будет sa.

После всей этой химии сервак лучше перегрузить
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948400
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить, надо еще проверить, что в sysalternats и
на всякий случай master..sysdatabases.
Вобще надо посмотреть что у тебя в sp_changedbowner, она наверно зависит от версии.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948404
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Описался - sysalternates.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948532
_SaniaЗа связь с логинами отвечает только текстовое поле loginame


_Sania
За связь с логинами отвечает только текстовое поле loginame


вот мы и убедились, что это не так и что играть c sysobjects uid все равно придется :-)
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948543
авторuid с master..syslogins не связан, он связан с sysusers в базе.


но uid связан с suid в sysusers базы, а тот уже с suid из master..syslogins.

Что и видно из приведенного мной запроса. Это элементарно.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32948646
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем связан?

suid в sysuser определяет прямые связи между suslogins и sysusers - их может быть много, а может быть только одна, и все будут ходить через алиасы (sysalternates) и тогда suid будет связан с altsuid - что не понятно?

Все это поднимается вместе с дампом - проблемы могут быть только в связи sususer и syslogins.

Проблема явно только с одним пользователем ADMIN, скорее всего он dbo, все что нужно согласовать syslogins и sysusers по suid, НИГДЕ НЕНУЖНО править uid.

dbo меняется элементарно, есть даже процедура, которая это делает (sp_changedbowner) но в случае если это логина нет на сервере она не отработает - поэтому и надо лезть в системные таблицы. Права на объекты вешаются на uid (или на роли), соответственно логинов в базе, которые ходят с определенны uid будет столько, сколько определено в susalternates. Дался тебе это uid, он наверняка 1.
Менять его нужно только если ты хочешь удалить ПОЛЬЗОВАТЕЛЯ В БАЗЕ (sysusers), связь с логинами осуществляется опосредованно.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32949650
_Saniato Алексей Кривеня

Что бы можно было отвечать более предметно, лучше привести
результат запроса
select name,uid,loginame from sysobjects where name = 'имя_проблемного_объекта'

тогда будет яснее, я думаю uid будет равен 1.

Он и есть 1:
select name,uid,loginame from sysobjects where name = 'CheckUNNClass'

name uid loginame
[char ] [smallint] [char ]
CheckUNNClass 1 ADMIN

Но заводить ADMIN я не хочу. На... мне лишний логин. Мне кажется проще сделать:
update sysusers set loginname = NULL
Только вот не зацепить чего-нибудь.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32949652
Алексей Кривеня
update sysusers set loginname = NULL


Ошибочка:
update sysobjects set loginname = NULL
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32949858
_Sania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Алексей Кривеня

Конечно sysobjects.

Можно и не заводить, только тогда выбери логин, который будет dbo, посмотри, что у тебя sp_changedbowner и проделай все что там описано.
...
Рейтинг: 0 / 0
Владелец объекта в ASE
    #32958420
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad_5181
Разработчики, ИМХО, уроды. Создавать объекты при разработке должен DBA, который в базе dbo. Исключение - при обслуживании одной фирмой


Не, не уроды. Уроды создавали бы логины на сервере. Они - хуже.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Владелец объекта в ASE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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