当前位置:数据库 > SQLServer >>

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

答案:有创建表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 交易在触发程序中结束。已中止批次。 */
其他:在用户管理那里,查看用户权限,然后把不给这个用户的权限前的钩去掉,确认就OK了 这是我测试 胡写的
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)
)

上一个:sql server 2005 在与 SQL Server 提示建立连接时出现与网络相关的或特定于实例的错误
下一个:为什么我安了SQL server 2005 后,程序是MSSQL的 设置好后。页面提示重修改SQL帐号的密码 改了也不行

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,