100分,SQL2005数据库角色权限问题!

来源:互联网 发布:java字符串去掉汉字 编辑:程序博客网 时间:2024/05/03 02:23

100分,SQL2005数据库角色权限问题! 
作  者:  triffang (冲凉不除3) 
等  级:   
信 誉 值:  100 
所属社区:  MS-SQL Server 基础类 
问题点数:  100 
回复次数:  17 
发表时间:  2006-6-2 18:42:05 
  
 
  

我建了个登陆名,命名为user。指定的数据库是DEMO,设置了角色bulkadmin.
因为我之前是用sa的,所以user登陆时就看不到sa建的表了。
其实我的意图是想:建个没有备份数据库,分离数据库权限的用户。但又能查看到原来sa建的表!

 
  triffang(冲凉不除3) ( ) 信誉:100  2006-6-2 18:47:33  得分: 0 
 
 
  
是这样子的,一个团队开发,用的都是同一个数据库。放在服务器上。但我不想人家能备份,能分离这数据库,只是给他用,只建表,修改表,存储过程等等。
那这个登陆名的权限要怎么设呢》

 
 
Top 
 zjcxc(邹建) ( ) 信誉:673  2006-6-2 19:53:45  得分: 0 
 
 
  
除非你把操作系统的权限也接管过来, 否则是控制不到的

 
 
Top 
 triffang(冲凉不除3) ( ) 信誉:100  2006-6-2 20:18:57  得分: 0 
 
 
  
把操作系统的权限也接管过来是什么意思?

 
 
Top 
 zjcxc(邹建) ( ) 信誉:673  2006-6-2 20:21:44  得分: 0 
 
 
  
好像理解得有些问题, 楼主主要是想控制某个sql登录不具有备份/分离数据库和权限?

 
 
Top 
 triffang(冲凉不除3) ( ) 信誉:100  2006-6-2 20:24:48  得分: 0 
 
 
  
是啊

 
 
Top 
 triffang(冲凉不除3) ( ) 信誉:100  2006-6-2 20:28:23  得分: 0 
 
 
  
老大,你的邮箱是多少啊。能跟你交流下吗?

 
 
Top 
 zjcxc(邹建) ( ) 信誉:673  2006-6-2 20:40:50  得分: 0 
 
 
  
-- 那你不给他相应的权限就成了

-- 示例如下:


-- 创建测试库
CREATE DATABASE test
GO

-- 创建测试表
USE test
GO

CREATE TABLE dbo.tb(id int)
GO

-- 创建登录
CREATE LOGIN [test]
WITH PASSWORD = '[test]1234',
DEFAULT_DATABASE = test

-- 权限分配
EXEC sp_grantdbaccess 'test'
EXEC sp_addrolemember N'db_datareader', N'test'
EXEC sp_addrolemember N'db_ddladmin', N'test'
EXEC sp_addrolemember N'db_accessadmin', N'test'
EXEC sp_addrolemember N'db_datawriter', N'test'
GO

-- 模拟新建用户的权限
SETUSER 'test'
GO

-- 查询 sa 建立的表
SELECT * FROM dbo.tb
GO

-- 备份数据库
BACKUP DATABASE test TO DISK = 'C:/test.bak'
GO

-- 分离数据库
EXEC sp_detach_db 'test'
GO

-- 恢复sa
SETUSER
GO

-- 删除测试
USE master
DROP LOGIN test
DROP DATABASE test

 
 
Top 
 gaojier1000(青岛※高捷) ( ) 信誉:100  2006-6-3 8:46:09  得分: 0 
 
 
  
标记,个人精华贴。

 
 
Top 
 triffang(冲凉不除3) ( ) 信誉:100  2006-6-3 9:08:43  得分: 0 
 
 
  
这不行,赋予了这四种权限之后。
db_datareader'
db_ddladmin'
db_accessadmin'
db_datawriter'
没有修改表的权限啊。
我的本意是,他能对表,存储过程,视图增删该查。
但不能备份数据库和分离数据库,不能分配权限

 
 
Top 
 triffang(冲凉不除3) ( ) 信誉:100  2006-6-3 19:55:09  得分: 0 
 
 
  
顶一下

 
 
Top 
 zjcxc(邹建) ( ) 信誉:673  2006-6-3 21:06:17  得分: 0 
 
 
  
-- 楼主没有测试?  你运行下面的脚本, 看看能否有DDL的权限

 

-- 那你不给他相应的权限就成了

-- 示例如下:


-- 创建测试库
CREATE DATABASE test
GO

-- 创建测试表
USE test
GO

CREATE TABLE dbo.tb(id int)
GO

-- 创建登录
CREATE LOGIN [test]
WITH PASSWORD = '[test]1234',
DEFAULT_DATABASE = test

-- 权限分配
EXEC sp_grantdbaccess 'test'
EXEC sp_addrolemember N'db_datareader', N'test'
EXEC sp_addrolemember N'db_ddladmin', N'test'
EXEC sp_addrolemember N'db_accessadmin', N'test'
EXEC sp_addrolemember N'db_datawriter', N'test'
GO

-- 模拟新建用户的权限
SETUSER 'test'
GO

-- 查询 sa 建立的表
SELECT * FROM dbo.tb
GO

-- 创建表
CREATE TABLE dbo.tb1(id int)
-- 修改表
ALTER TABLE dbo.tb ADD test int
GO

-- 创建存储过程
CREATE PROC p
AS
SELECT 1
GO

-- 修改存储过程
ALTER PROC P
AS
SELECT 2
GO

-- 调用存储过程
EXEC P
GO
-- 备份数据库
BACKUP DATABASE test TO DISK = 'C:/test.bak'
GO

-- 分离数据库
EXEC sp_detach_db 'test'
GO

-- 恢复sa
SETUSER
GO

-- 删除测试
USE master
DROP LOGIN test
DROP DATABASE test

 

 
 
Top 
 zjcxc(邹建) ( ) 信誉:673  2006-6-3 21:07:18  得分: 0 
 
 
  
db_ddladmin 固定数据库角色的成员可以在数据库中运行任何数据定义语言 (DDL) 命令

DDL命令自然包括CREATE TABLE/PROC 这类建立对象的, 也包含ALTER 这类修改的, 怎么会不能建立表/修改表等?

 
 
Top 
 triffang(冲凉不除3) ( ) 信誉:100  2006-6-3 22:15:57  得分: 0 
 
 
  
哦,你这样的话,好象在企业管理器里不能操作,语句能执行。

 
 
Top 
 oasis_wen(活着) ( ) 信誉:100  2006-6-3 22:23:50  得分: 0 
 
 
  
标记一下

 
 
Top 
 zjcxc(邹建) ( ) 信誉:673  2006-6-4 9:29:41  得分: 0 
 
 
  
企业管理器? sql 2005是manger studio啊, 右键用户的属性--设置数据库角色为我上面列出的几种就行了.

 
 
Top 
 TERRYYRRET(命运) ( ) 信誉:100  2006-6-4 10:51:15  得分: 0 
 
 
  
学习

 
 
Top 
 triffang(冲凉不除3) ( ) 信誉:100  2006-06-04 17:05:00  得分: 0 
 
 
   我明白的。
我上面的意思是说在manger studio管理界面选择一个表进去时不能修改。只能通过SQL语句修改。!
但能新增。

谢谢你了,老大!
 
 
Top 

原创粉丝点击