Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 2005 Как дать права на чтение Database Diagram  [new]
Flint-San
Member

Откуда: Magnitogorsk
Сообщений: 146
@@Version
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) 
	Oct 14 2005 00:33:37 
	Copyright (c) 1988-2005 Microsoft Corporation
	Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)

sp_dbcmptlevel
The current compatibility level is 90.

Разработчики web приложений включены в userRole и две стандартные роли БД, такие как
db_datareader
db_ddladmin

Как сделать доступными для чтения мои диаграммы(созданные под dbo) для разработчиков?
Мне нельзя включать их в роль db_owner.

В 2k достаточно было сделать
 
 grant select on dtproperties to пользовательская роль


в 2005 как?
20 мар 08, 09:22    [5433775]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Видимо dbo.sysdiagrams.
20 мар 08, 09:35    [5433833]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Flint-San
Member

Откуда: Magnitogorsk
Сообщений: 146
Разработчик уже включен в роль db_datareader и ему доступны системные таблицы в этой же БД.
Но он не видит диаграммы в EM.
20 мар 08, 09:47    [5433913]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Glory
Member

Откуда:
Сообщений: 104751
Flint-San
Разработчик уже включен в роль db_datareader и ему доступны системные таблицы в этой же БД.
Но он не видит диаграммы в EM.

И вы посмотрели каким запросом EM формирует этот список ?
20 мар 08, 10:30    [5434213]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Flint-San
Member

Откуда: Magnitogorsk
Сообщений: 146
О спс Glory совсем забыл про профилер!
20 мар 08, 11:10    [5434559]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Flint-San
Member

Откуда: Magnitogorsk
Сообщений: 146
При щелчке пользователя в EM на Database Diagram профилер выдал
create table #tmp_sp_helpdiagrams
([Database] sysname not null, Name sysname not null, ID int not null, Owner sysname null, OwnerID int not null)
insert into #tmp_sp_helpdiagrams exec dbo.sp_helpdiagrams
		


SELECT
tshd.Name AS [Name],
 
			'Server[@Name=' + quotename(cast(serverproperty(N'Servername') as sysname),'''') + 
			']/Database[@Name=' + quotename(db_name(),'''') +
			']/DatabaseDiagram[@Name=' +	quotename(tshd.Name,'''') + ' and @OwnerID=' + quotename(cast(tshd.OwnerID as nvarchar(30)),'''') + ']'
		 AS [Urn],
tshd.OwnerID AS [OwnerID],
tshd.Owner AS [Owner]
FROM
#tmp_sp_helpdiagrams AS tshd
ORDER BY
[Name] ASC

дав права пользователю как
GRANT EXEC ON dbo.sp_helpdiagrams TO пользовательская роль в которой включен логин
Выполняю у пользователя
use MyDB
go
EXEC dbo.sp_helpdiagrams
Resultset пуст!

Выполняю ту же хп под своим аккаунтом, Resultset выдает список диаграмм.

смотрю
sp_helptext 'sp_helpdiagrams'

и дико удивляюсь

CREATE PROCEDURE dbo.sp_helpdiagrams
(
@diagramname sysname = NULL,
@owner_id int = NULL
)
WITH EXECUTE AS N'dbo'
AS
BEGIN
DECLARE @user sysname
DECLARE @dboLogin bit
EXECUTE AS CALLER;
SET @user = USER_NAME();
SET @dboLogin = CONVERT(bit,IS_MEMBER('db_owner'));
REVERT;
SELECT
[Database] = DB_NAME(),
[Name] = name,
[ID] = diagram_id,
[Owner] = USER_NAME(principal_id),
[OwnerID] = principal_id
FROM
sysdiagrams
WHERE
(@dboLogin = 1 OR USER_NAME(principal_id) = @user) AND
(@diagramname IS NULL OR name = @diagramname) AND
(@owner_id IS NULL OR principal_id = @owner_id)
ORDER BY
4, 5, 1
END
Обратите внимание на условие в хп dbo.sp_helpdiagrams

(@dboLogin = 1 OR USER_NAME(principal_id) = @user)

приехали :(
20 мар 08, 11:32    [5434779]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Glory
Member

Откуда:
Сообщений: 104751
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/06d9a7d5-ef04-400c-a340-7a3e5d54f685.htm

Only the owner of the diagram or a member of the db_owner role of the database can open the diagram.
20 мар 08, 11:34    [5434794]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
Т.е., если я все правильно понял, только на просмотр дать не получится?
22 июл 11, 14:02    [11012623]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Pavel
Member

Откуда: Кемерово
Сообщений: 2435
?
25 июл 11, 13:52    [11022856]     Ответить | Цитировать Сообщить модератору
 Re: 2005 Как дать права на чтение Database Diagram  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
Pavel,
Нет
25 июл 11, 14:21    [11023075]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить