这可能吗?
我希望对用户有一个限制,比方说5个数据库。
因此,当他尝试发出CREATE查询以创建第6个异常时,会抛出异常。
答案 0 :(得分:3)
不,你不能这样做 - 至少不是以声明的方式(只是简单地指定每个用户拥有的最大数据库数)。
使用标准SQL Server功能最接近的是为CREATE DATABASE
创建DDL触发器,并在该触发器中检查当前用户是否已拥有五个数据库,在这种情况下,请让触发操作失败。
有些事情(取自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
答案 1 :(得分:1)
查看DDL触发器,使用下面这样的触发器可以捕获CREATE DATABASE语句
CREATE TRIGGER ddl_trig_database
ON ALL SERVER
FOR CREATE_DATABASE
AS
--do something here
-- select count(*)from sys.sysdatabases where sid = ???
GO