楼主 的需求只能通过DB 触发器控制
go--举个例子
USE [master]
GO
CREATE LOGIN [Roy] WITH PASSWORD=N'1', DEFAULT_DATABASE=[Test], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [Test]
GO
CREATE USER [Roy] FOR LOGIN [Roy]
GO
USE [Test]
GO
/****** 物件: Schema [Roy]指令码日期: 08/19/2011 09:46:15 ******/
CREATE SCHEMA [Roy] AUTHORIZATION [Roy]
go
use [Test]
GO
GRANT CREATE TABLE TO [Roy]
GO
CREATE TRIGGER tr_DBDropTable ON DATABASE
FOR DROP_TABLE,ALTER_TABLE
AS
IF ORIGINAL_LOGIN()='Roy'
BEGIN
PRINT '没权限执行 DROP TABLE'
ROLLBACK
end
GO
--以下测试,用登陆用户Roy
go
CREATE TABLE Roy.Roy(ID int)
GO
SELECT SUSER_NAME(), USER_NAME()
DROP TABLE Roy.Roy
/*
没权限执行 DROP TABLE
讯息 3609,层级 16,状态 2,行 2
交易在触发程序中结束。已中止批次。
*/
方法一、由Management Studio中的表上右键选属性(Properties),左边选权限(Permissions),右边中间添加和选中某个User或Role,下面选中或移除某个权限。方法二、语句 : Grant 权限 On table 表名 To 用户名
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)