2010-09-01 3 views
0

Возможно ли это?Укажите максимальное количество баз данных, которыми может обладать пользователь

Я хотел бы иметь лимит для пользователя, скажем, 5 баз данных.

Так что, когда он пытается выдать запрос CREATE для создания шестого, создается исключение.

+0

I» Думаю, есть что-то, что вы могли бы сделать с функциями управления на основе политик, даже если это ежедневная проверка, чтобы убедиться, что кто-то превысил это правило. Однако я не знаком с этой подсистемой. –

ответ

3

Нет, вы не можете сделать это - по крайней мере, не декларативным способом (просто укажите максимальное количество баз данных, принадлежащих каждому пользователю).

Ближе всего вы можете получить стандартную функциональность SQL Server, чтобы создать триггер DDL для CREATE DATABASE, и в этом триггере проверьте, имеет ли текущий пользователь уже пять баз данных, и в этом случае разрешить триггеру операция.

Что-то вдоль линий этого (взято из TechNet sample):

CREATE TRIGGER ddl_trig_database 
ON ALL SERVER 
FOR CREATE_DATABASE 
AS 
    -- here, check to see if current user already owns five databases 
    -- and if so, fail the trigger by using RAISERROR 
GO 
+0

Что делать, если/когда они запускают sp_changeDBOwner? –

+0

@Philip Kelley: ну, в этом случае вам, возможно, придется поймать еще несколько DDL-операций ... как я уже сказал - это может стать довольно грязным, и нет простого, «готового», декларативный способ сделать это ... –

1

взгляд в DDL триггеров, с триггером, как этот ниже вы можете ловушку DATABASE заявление CREATE

CREATE TRIGGER ddl_trig_database 
ON ALL SERVER 
FOR CREATE_DATABASE 
AS 
    --do something here 
    -- select count(*)from sys.sysdatabases where sid = ??? 
GO 
Смежные вопросы