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