在MSSQL SERVER2005中,如何给用户授予只有创建表、没有删除表及修改表结构的权限

 我来答
roy_88
推荐于2016-01-09 · TA获得超过3696个赞
知道大有可为答主
回答量:2914
采纳率:100%
帮助的人:2695万
展开全部
有创建表Create table权限,隐含Alter。
楼主 的需求只能通过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
交易在触发程序中结束。已中止批次。
*/
shujialaila
2011-09-02 · TA获得超过314个赞
知道大有可为答主
回答量:1155
采纳率:0%
帮助的人:1615万
展开全部
这是我测试 胡写的
ALTER DATABASE studydb SET RECURSIVE_TRIGGERS on
GO
IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID=OBJECT_ID('tb') AND [type]='u')
begin
DROP TABLE tb
END
go
CREATE TABLE tb
(
testfield VARCHAjR(50)
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雁有归期
2011-08-19 · TA获得超过214个赞
知道小有建树答主
回答量:322
采纳率:0%
帮助的人:223万
展开全部
在用户管理那里,查看用户权限,然后把不给这个用户的权限前的钩去掉,确认就OK了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式