Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 видимость объектов в SCHEMA  [new]
brans
Member

Откуда:
Сообщений: 46
В базе basa данных есть две SCHEMA: dbo и tera. Я захожу под пользователем tera, которые находится в роле sysadmin базы данных, db_owner для tera и владеет самой SCHEMA tera.

Когда я выполняю запрос:
Select * FROM [basa].[dbo].[aspnet_Roles]; - запрос работает
Когда я выполняю запрос :
Select * FROM [aspnet_Roles]; -(без уточнения ) запрос работает

Когда я выполняю запрос:
Select * FROM [basa].[tera].[test];- запрос работает
Select * FROM [test];- запрос выдает ошибку, что объект test не найден.

Как сделать видимой таблицу test в SCHEMA tera без уточнения? Этот пользователь и так уже в роли db_owner и владеет этой SCHEMA.
15 янв 12, 14:52    [11906754]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
brans
Как сделать видимой таблицу test в SCHEMA tera без уточнения? Этот пользователь и так уже в роли db_owner и владеет этой SCHEMA.
Никак, если пользователь в роли db_owner.

А зачем это нужно? Всегда пишите название схемы.
15 янв 12, 14:58    [11906768]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
brans
Member

Откуда:
Сообщений: 46
alexeyvg,
это необходимо. так как в коде разработчики указали(по логу вижу), короткое название, без уточнения SCHEMA. на оригинальном серваке все работало. я переносил оригинальную базу вручную через "script as...", плюс где-то мог не ту галочку поставить относительно безопасности и ролей.
теперь служба выдает ошибку, мол объект не найден. у меня есть полный доступ к базе данных и нет к коду. от этого и отталкиваюсь.
15 янв 12, 15:07    [11906799]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
brans
Member

Откуда:
Сообщений: 46
"Никак, если пользователь в роли db_owner". Мне нужно убрать его из этой роли? я наоборот думал, что в первую очередь ищутся объекты db_owner
15 янв 12, 15:08    [11906808]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
brans
alexeyvg,
это необходимо. так как в коде разработчики указали(по логу вижу), короткое название, без уточнения SCHEMA. на оригинальном серваке все работало. я переносил оригинальную базу вручную через "script as...", плюс где-то мог не ту галочку поставить относительно безопасности и ролей.
теперь служба выдает ошибку, мол объект не найден. у меня есть полный доступ к базе данных и нет к коду. от этого и отталкиваюсь.
Ну так передавайте привед разработчикам. Схему надо указывать всегда.
15 янв 12, 16:01    [11906923]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
brans
Member

Откуда:
Сообщений: 46
Я к ним доступа не имею. Имеем то, что имеем. Подскажите лучше как задать схему по умолчанию? dbo же работает без указания схемы. значит можно это сделать!
15 янв 12, 16:23    [11906972]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
invm
Member

Откуда: Москва
Сообщений: 9823
brans
Я к ним доступа не имею. Имеем то, что имеем. Подскажите лучше как задать схему по умолчанию? dbo же работает без указания схемы. значит можно это сделать!

http://msdn.microsoft.com/en-us/library/ms173463.aspx
Important

The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. All members of the sysadmin fixed server role have a default schema of dbo.
15 янв 12, 16:43    [11907017]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
brans,
Схема по умолчанию у юзера какая задана?
15 янв 12, 16:52    [11907053]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
brans
Member

Откуда:
Сообщений: 46
ОК. Раз у сисадмина схема-по умолчанию dbo - я создал новый login - "test", поставил ему server role - "public". Базу данную по умолчанию выбрал. Поставил в разделе "users maped to this login" - пользователя test. Задал ему схему по умолчанию "tera". В настройках пользователя задал ему роль "datareader". Зашел под этим логином через sms. Без явного указания схемы
та же хрень - объект не найден! Как так, ведь всё должно работать!
15 янв 12, 17:26    [11907136]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
invm
Member

Откуда: Москва
Сообщений: 9823
use tempdb;
go
create schema test;
go
create table test.Table1 (i int);
go
create user TestUser without login with default_schema = test;
go
exec dbo.sp_addrolemember 'db_datareader', 'TestUser';
go
execute as user = 'TestUser';
select * from Table1;
revert;
go
drop user TestUser;
go
drop table test.Table1;
go
drop schema test;
go
15 янв 12, 17:45    [11907163]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
brans
Member

Откуда:
Сообщений: 46
brans,
про последний пост забудьте. чуть позже заработало. дело таки было в том, что у сисадминов всегда dbo. А я в начале поставил себе сисадмина роль. СПАСИБО БОЛЬШОЕ!
15 янв 12, 17:54    [11907173]     Ответить | Цитировать Сообщить модератору
 Re: видимость объектов в SCHEMA  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
ну вот родился еще один костыль на наших глазах
16 янв 12, 13:37    [11910570]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить