create table 权限问题

szm341 2013-03-26 04:18:19
如何设置账户具有create table权限又同时无drop table权限呢??
...全文
418 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-03-27
  • 打赏
  • 举报
回复
权限没怎么研究过,但是我认为不外乎两类:1、全部没显式定义的就deny,2、用的时候查询是否有某某权限,只允许那些权限操作。 不过也有可能混合两种来判断。 怎么就你这个贴我回复不了啊
szm341 2013-03-27
  • 打赏
  • 举报
回复
引用 10 楼 DBA_Huangzj 的回复:
花了一个小时始终上不了网,还要动用私家3G卡。几时有细粒度控制,底层也还是deny咯
你们公司快倒闭了吧~网都上不起~呵呵 不会都基于deny吧,那我只给一个刚建的用户一个表的select权限,那么其他全部权限,在底层都是deny掉的吗?
發糞塗牆 2013-03-27
  • 打赏
  • 举报
回复
花了一个小时始终上不了网,还要动用私家3G卡。几时有细粒度控制,底层也还是deny咯
szm341 2013-03-27
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
试过deny没?
deny跟DDL效果差不多吧。。有没有直接一点的啊~2012有这样细度的权限控制吗?
發糞塗牆 2013-03-27
  • 打赏
  • 举报
回复
试过deny没?
szm341 2013-03-27
  • 打赏
  • 举报
回复
沉了。。
szm341 2013-03-26
  • 打赏
  • 举报
回复
引用 5 楼 annatrov 的回复:
我试了,的确不行,需要更改架构权限。不符合楼的需求。
就是这个SCHEMA权限麻烦,想只给create table,其他关于SCHEMA的都不给
七不语v 2013-03-26
  • 打赏
  • 举报
回复
引用 4 楼 szm341 的回复:
引用 3 楼 annatrov 的回复: SQL code?123456789101112USE [dbname]GOCREATE ROLE [createtable] AUTHORIZATION [dbo.] --创建数据库角色GOuse [dbname]GOGRANT CREATE TABLE TO [createtable] --给角色赋予建表权限GOUSE [dbname]GOEXE……
我试了,的确不行,需要更改架构权限。不符合楼的需求。
szm341 2013-03-26
  • 打赏
  • 举报
回复
引用 3 楼 annatrov 的回复:
SQL code?123456789101112USE [dbname]GOCREATE ROLE [createtable] AUTHORIZATION [dbo.] --创建数据库角色GOuse [dbname]GOGRANT CREATE TABLE TO [createtable] --给角色赋予建表权限GOUSE [dbname]GOEXEC sp_addr……
有条件你可以实际创建个角色试试,不是这么简单的,单独的create table权限是不够的
七不语v 2013-03-26
  • 打赏
  • 举报
回复

USE [dbname]
GO
CREATE ROLE [createtable] AUTHORIZATION [dbo.]  --创建数据库角色
GO
use [dbname]
GO
GRANT CREATE TABLE TO [createtable]  --给角色赋予建表权限
GO
USE [dbname]
GO
EXEC sp_addrolemember N'createtable', N'loginname'  --给登录名赋予创建的角色
GO
szm341 2013-03-26
  • 打赏
  • 举报
回复
引用 1 楼 chuanzhang5687 的回复:
有创建表Create table权限,隐含Alter。楼主 的需求只能通过DB 触发器控制 go--举个例子
关键是给alter权限会附加很多其他权限,又不想借助DDL触发器-_- sqlserver的这个权限控制有点粗粒啊
chuanzhang5687 2013-03-26
  • 打赏
  • 举报
回复
有创建表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
交易在触发程序中结束。已中止批次。
*/

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧