A. 如何在sql Server中定义用户的查询权限,如用户一次必须查询多余10个记录的统计值
1、--创建SQL Server登录名
use master
go
exec sp_addlogin'user1','password','BookManagement'
go
--创建数据库用户
use BookManagement
go
create USER user1 for login user1
2、验证连接
在ssms中,选择“文件”-->“新建”-->“数据库引擎查询”命令,在对话框中,选择“SQL Server 身份验证”选项,然后输入登录名(user1)和密码,然后点击“连接”
3、设置对象权限
(解释:grant permission[,...n]
on object to <database_principal>[,...n]
with grant optoin
permission 设置对象的权限。可以指定的权限包括:select。insert、update、delete)
use BookManagement
go
grant select
on dbo.Authors to user1
4、
(1)新建登录名(user2) 设置密码,设置默认数据库'BookManagement'
(2)选择‘用户映射’选项,‘映射到此登录名的用户’区域选中'BookManagement'数据库,下面选“public”
(3)在’user2‘点开属性,添加’选择对象‘-->“特定对象”
(4)对象类型中,选’表‘;对象名称’数据库用户-user2‘
(5)设置权限,选’select‘,确定就好了
B. sqlserver2005数据库 如何新建一个用户让他对服务器上的所有库都只有select权限,或者是只能操作视图也行
1. SQL数据库分配权限
打开SQL-Server管理工具安全性登陆名右键(新建登陆名)
输入相应的信息(这里要去掉强制实施密码策略,强制密码过期,用户在下次登录时必须修改密码的选择)
用户映射选择我们要设置权限的数据库通过选择数据库角色成员身份来设置新建用户的权限
一般对整个库做权限的时候都是需要所有权限勾选db_owner就可以了(确定)
这样就可以用我们新建的这个用户名来访问我们的数据库服务器了,而且这个用户名只拥有我们所勾选的数据库的所有权限。
2. SQL数据库对每个表分配权限
打开SQL-Server管理工具安全性登陆名右键(新建登陆名)
输入相应的信息(这里要去掉强制实施密码策略,强制密码过期,用户在下次登录时必须修改密码的选择)
用户映射选择我们要设置权限的数据库通过选择数据库角色成员身份来设置新建用户的权限
因为我们要对每个表进行单独的设置所以这里我们就不勾选db_owner了
打开我们刚才勾选的test数据库安全性用户中看到我们刚才新建的那个用户了。
找到新建的用户名右键属性
安全对像
添加
特定类型的所有对象确定
对象类型选择表
确定这样我们就能看到test数据库中的所有表了
接着我们再对每个表设置权限
我对两个表都是设置的Select权限确定这样我们用test_name登陆test数据库的时候只能对其中的两个表做Select操作不能做其它操作
C. SQL Server用户权限问题
创建角色,用户,权限/*--示例说明 示例在数据库pubs中创建一个拥有表jobs的所有权限、拥有表titles的SELECT权限的角色r_test 随后创建了一个登录l_test,然后在数据库pubs中为登录l_test创建了用户账户u_test 同时将用户账户u_test添加到角色r_test中,使其通过权限继承获取了与角色r_test一样的权限 最后使用DENY语句拒绝了用户账户u_test对表titles的SELECT权限。 经过这样的处理,使用l_test登录SQL Server实例后,它只具有表jobs的所有权限。--*/USE pubs--创建角色 r_testEXEC sp_addrole 'r_test'--授予 r_test 对 jobs 表的所有权限GRANT ALL ON jobs TO r_test--授予角色 r_test 对 titles 表的 SELECT 权限GRANT SELECT ON titles TO r_test--添加登录 l_test,设置密码为pwd,默认数据库为pubsEXEC sp_addlogin 'l_test','pwd','pubs'--为登录 l_test 在数据库 pubs 中添加安全账户 u_testEXEC sp_grantdbaccess 'l_test','u_test'--添加 u_test 为角色 r_test 的成员EXEC sp_addrolemember 'r_test','u_test'--拒绝安全账户 u_test 对 titles 表的 SELECT 权限DENY SELECT ON titles TO u_test/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/--从数据库 pubs 中删除安全账户EXEC sp_revokedbaccess 'u_test'--删除登录 l_testEXEC sp_droplogin 'l_test'--删除角色 r_testEXEC sp_droprole 'r_test'
D. SQL server 2008 权限
对于不想让某一用户(如user1)查看表(如 table j)直接在定义该用户时不授予select on j 的权限,若已经授予了可用下面SQL语句解决: revoke select on j(注意在SQL2008中是 on j ,若on table j就出错) from user1 同样的,授予user1对表j 的添加(insert)或删除(delete)或修改(update)权限即可,已insert 为例: grant insert on j to user1 另外,只能是数据库的超级用户sa或是对表j拥有添加(insert)或删除(delete)或修改(update)权限的一般用户才能授权给user1,而对于收回user1的权限一般由数据库的超级用户sa或已将权限授予user1的用户。
E. mssql中select权限的问题
试一下用
myrecord=cn.execute("select * from s_user")
F. 关于SQL server数据库表中各权限的具体意思
表 table1
id name
1 张三
2 李四
----------------------
select:查询
用法:
select * from table1
select * from table1 where name='张三'
select * from table1 where id=1
insert:插入
用法:
insert into table1(name) values('王五')
update:更新
用法:
update table1 set name='张XX' where name ='张三'
delete:删除
用法:
delete from table1 where name ='李四'
delete from table1
EXEC :
这是嵌入SQL的语法,比如EC就是在C语言里面增加SQL功能的,除了可以使用所有标准的C语言语法以外,可以使用EXEC SQL(或者$符号)开始的一行书写SQL语句。
EXEC SQL include sqlca
包含一个文件,类似C、ASP的include语句,把那个文件sqlca的内容包含到当前位置
EXEC SQL BEGIN DECLARE SECTION
开始申明,下面的一段语句将是SQL系统的变量申明语句
EXEC SQL END DECLARE SECTION
申明语句结束
G. SQL Server如何去掉某个用户的select * 权限
首先进入数据库级别的【安全性】-【登录名】-【新建登录名】
H. SQL中SELECT权限
因为dbo数据库所有者没有赋给你select的权限呀
登陆sa:
use 当前数据库名
go
grant select for 你想个权限的登陆名 on 要让查询的表名I. sql server 拒绝了select权限
建议你这样试试看:
- 查看登录的数据库用户是否具备select权限
- 登录sa账号来进行select
J. sql语句server中怎么查询用户的角色和权限
SQL Server中查询用户的对象权限和角色的方法
-- 查询用户的object权限
exec sp_helprotect NULL, 'UserName'
-- 查询用户拥有的role
exec sp_helpuser 'UserName'
-- 查询哪些用户拥有指定的系统role
exec sp_helpsrvrolemember 'sysadmin'
-- 可查询嵌套role
WITH tree_roles as
(
SELECT role_principal_id, member_principal_id
FROM sys.database_role_members
WHERE member_principal_id = USER_ID('UserName')
UNION ALL
SELECT c.role_principal_id,c.member_principal_id
FROM sys.database_role_members as c
inner join tree_roles
on tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
FROM tree_roles
-- 其他权限相关基本表
select * from sysusers
select * from syspermissions
-- Who has access to my SQL Server instance?
SELECT
name as UserName, type_desc as UserType, is_disabled as IsDisabled
FROM sys.server_principals
where type_desc in('WINDOWS_LOGIN', 'SQL_LOGIN')
order by UserType, name, IsDisabled
-- Who has access to my Databases?
SELECT
dp.name as UserName, dp.type_desc as UserType, sp.name as LoginName, sp.type_desc as LoginType
FROM sys.database_principals dp
JOIN sys.server_principals sp ON dp.principal_id = sp.principal_id
order by UserType
select * from sys.database_principals
-- Server Roles
select
p.name as UserName, p.type_desc as UserType, pp.name as ServerRoleName, pp.type_desc as ServerRoleType
from sys.server_role_members roles
join sys.server_principals p on roles.member_principal_id = p.principal_id
join sys.server_principals pp on roles.role_principal_id = pp.principal_id
where pp.name in('sysadmin')
order by ServerRoleName, UserName
-- Database Roles
SELECT
p.name as UserName, p.type_desc as UserType, pp.name as DBRoleName, pp.type_desc as DBRoleType, pp.is_fixed_role as IfFixedRole
FROM sys.database_role_members roles
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
JOIN sys.database_principals pp ON roles.role_principal_id = pp.principal_id
where pp.name in('db_owner', 'db_datawriter')
-- What can these users do?
SELECT
grantor.name as GrantorName, dp.state_desc as StateDesc, dp.class_desc as ClassDesc, dp.permission_name as PermissionName ,
OBJECT_NAME(major_id) as ObjectName, GranteeName = grantee.name
FROM sys.database_permissions dp
JOIN sys.database_principals grantee on dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor on dp.grantor_principal_id = grantor.principal_id
where permission_name like '%UPDATE%'