服安最新信息资讯
- 数据库服务器负荷的分析与优化
- 如何优化 SQL Server 数据访问程序
- SQL Server存储过程介绍
- 如何巧妙利用SQL Server的EXISTS结构
- Windows Server 2008 R2 案例集:美国大陆
- SQL Server 2008在商务智能上的三个优

服安资讯热点推荐
- 分区表、分区索引和全局索引部分
- Windows Server 2008 R2 案例集:美国大陆
- 分布式DBA:掌握SQL存储过程
- 轻松了解SQL Server 2008的新压缩特性
- 巧用一条SQL 实现其它进制到十进制
- 如何在SQL Server中通过.NET远程的执行
- 详解SQL Server 2008中的管理
- 使用OPENROWSET把大型文件读取到SQL
- 巧用SQL-DMO创建备份及校验的ASP应用
- 教你快速掌握SQL Server锁的相关概念
- 评点SQL Server 2008的恢复备份模式
- SQL Server数据库服务器间的数据同步
- 优化SQL Server数据库查询技巧
- 利用DBCC PAGE查看SQL Server中的表和索
- 做好SQLServer 2008结尾日志备份
- 如何优化 SQL Server 数据访问程序
- 在SQL Server中大量使用Coalesce
- 创建移动SQL Server 2008对象的脚本
服安资讯阅览排行
- 如何用SQL语句查询表名和行数?
- 如何确定自己在SQL Server 2005中拥有
- SQL Server数据库服务器间的数据同步
- SQL Server 2000/2005下将数据导出到文本
- 浅析如何掌握SQL Server的锁机制
- 如何通过存储过程实现记录集的循
- SQL Server存储过程介绍
- 优化SQL Server数据库查询技巧
- 手把手教你SQL Server2008性能数据收集
- SQL Server 2008在商务智能上的三个优
- 数据库服务器负荷的分析与优化
- 影响SQLserver性能的关键三个方面
- 轻松掌握如何从命令行启动mysqld服
- 如何自动备份SQL Server 2005分析服务
- SQL Server数据表提示NOLOCK和READPAST
- 巧用SQL链接服务器访问远程Access数
信息安全法律法规
- 信息安全等级保护管理办法
- 广东省计算机信息系统安全保护条
- 中国国家信息安全等级保护制度开
- 欧盟网络和信息安全法律规制及其
- 互联网电子公告服务管理规定
- 互联网上网服务营业场所管理条例
- 浪潮服务器安全技术要求成为国家
- 计算机信息网络国际联网安全保护
服务器安全技术资讯
- 深入挖掘Oracle内部SQL注入
- 什么是MPLS中的FEC?
- 如何让域控DC的AD更加安全
- 实例:Linux中如何查看服务及监听端
- 服务器安全检查十大要素
- 什么叫0day?0day是什么?
- Windows 2003下如何提高FSO安全性
- 计算机网络安全的六大指标详述
服安解决方案
如何确定自己在SQL Server 2005中拥有的权限
来源:中国服务器安全网 时间:2008-02-29 作者: 点击:次 责任编辑:Flyfox
TAG:
Server
权限
SQL
2005
如何确定
服务器安全应急处理中心:让您的服务器更安全! 进入安全讨论社区

如何确定自己在ServerSecurity/Database/'>SQL Server 2005中拥有的权限
问题:
有时候我会碰到这样的应用程序问题,即我有时不能执行应用程序的某些功能,而我的同事或同行却可以完成。所以我需要快速而且简便的方法能够确定 我在ServerSecurity/Database/'>SQL Server里的权限。有没有什么简单易行的方法呢?另外,我如何能够比较两个不同的用户在同一个实例、数据库或对象里的权限差异呢?最好能够提供尽量多 的建议,谢谢。
专家解答:
针对你的问题,虽然有好几种不同的解决方案(Management Studio、系统存储过程、系统视图、自定义脚本等等)可以确定你在ServerSecurity/Database/'>SQL Server中的权限,但是在这里我们想主要介绍fn_my_permissions表值函数的功能。简单来说,fn_my_permissions表值 函数可以接受对象名称和对象类型作为变量根据返回有效的权限结果,包括直接赋予登录用户权限、登录用户所属群体或团体的权限或任何不被拒绝的权限。从对象 水平上来说,下面列出了可以返回的对象信息类型:
- APPLICATION ROLE
- ASSEMBLY
- ASYMMETRIC KEY
- CERTIFICATE
- CONTRACT
- DATABASE
- ENDPOINT
- FULLTEXT CATALOG
- LOGIN
- MESSAGE TYPE
- OBJECT
- REMOTE SERVICE BINDING
- ROLE
- ROUTE
- SCHEMA
- SERVER
- SERVICE
- SYMMETRIC KEY
- TYPE
- USER
- XML SCHEMA COLLECTION
而系统管理员拥有管理特权,对于这个函数也许不会很感兴趣,但是管理员也可以模仿普通用户通过使用该函数来确定其用户有效权限来解决某些跟权限 相关的问题。如果某个用户可以执行某个任务,而另外一个用户则不能的话,这个表值函数的作用就很大了,可以确定在对象水平上不同用户的权限差异。
我们现在可以来看看一些使用fn_my_permissions表值函数的基本例子:
例子 - ServerSecurity/Database/'>SQL Server实例权限
| USE AdventureWorks; SELECT * FROM fn_my_permissions(NULL, 'SERVER'); GO |
例子 - 数据库权限
| USE AdventureWorks; SELECT * FROM fn_my_permissions('AdventureWorks', 'DATABASE'); GO |
例子 – 表权限
| USE AdventureWorks; SELECT * FROM fn_my_permissions('HumanResources.Employee', 'OBJECT') ORDER BY subentity_name, permission_name ; GO |
安全性实例
前面是三个比较基本直接的确定权限的例子,但是还没有真正地显示出fn_my_permissions表值函数的价值。我们现在来创建四个不同 的登录用户,分别对其赋予和拒绝各种权利。然后我们来针对某个具体的对象执行fn_my_permissions来确定每个用户的有效权限。
创建 ServerSecurity/Database/'>SQL Server 登录用户
| USE [master] GO CREATE LOGIN [Tom] WITH PASSWORD=N'Tom', DEFAULT_DATABASE=[AdventureWorks], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO USE [AdventureWorks] GO CREATE USER [Tom] FOR LOGIN [Tom] GO USE [AdventureWorks] GO ALTER USER [Tom] WITH DEFAULT_SCHEMA=[HumanResources] GO USE [master] GO CREATE LOGIN [Linda] WITH PASSWORD=N'Linda', DEFAULT_DATABASE=[AdventureWorks], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO USE [AdventureWorks] GO CREATE USER [Linda] FOR LOGIN [Linda] GO USE [AdventureWorks] GO ALTER USER [Linda] WITH DEFAULT_SCHEMA=[Purchasing] GO USE [master] GO CREATE LOGIN [Jessica] WITH PASSWORD=N'Jessica', DEFAULT_DATABASE=[AdventureWorks], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO USE [AdventureWorks] GO CREATE USER [Jessica] FOR LOGIN [Jessica] GO USE [AdventureWorks] GO ALTER USER [Jessica] WITH DEFAULT_SCHEMA=[Sales] GO USE [master] GO CREATE LOGIN [Katie] WITH PASSWORD=N'Katie', DEFAULT_DATABASE=[AdventureWorks], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO USE [AdventureWorks] GO CREATE USER [Katie] FOR LOGIN [Katie] GO USE [AdventureWorks] GO ALTER USER [Katie] WITH DEFAULT_SCHEMA=[dbo] GO |
向固定的数据库角色赋予权利
| USE [AdventureWorks] GO EXEC sp_addrolemember N'db_owner', N'Jessica' GO EXEC sp_addrolemember N'db_datareader', N'Katie' GO EXEC sp_addrolemember N'db_datawriter', N'Katie' GO |
赋予对象水平的权利
| use [AdventureWorks] GO GRANT EXECUTE ON [dbo].[uspGetBillOfMaterials] TO [Tom] GO GRANT EXECUTE ON [dbo].[uspGetEmployeeManagers] TO [Tom] GO GRANT EXECUTE ON [dbo].[uspGetManagerEmployees] TO [Tom] GO GRANT EXECUTE ON [dbo].[uspGetWhereUsedProductID] TO [Tom] GO GRANT EXECUTE ON [dbo].[uspLogError] TO [Tom] GO use [AdventureWorks] GO GRANT SELECT ON [HumanResources].[EmployeeAddress] TO [Linda] GO GRANT EXECUTE ON [dbo].[uspGetBillOfMaterials] TO [Linda] GO GRANT SELECT ON [dbo].[MyTableVar] TO [Linda] GO GRANT SELECT ON [HumanResources].[Department] TO [Linda] GO GRANT SELECT ON [dbo].[AWBuildVersion] TO [Linda] GO GRANT SELECT ON [HumanResources].[EmployeeDepartmentHistory] TO [Linda] GO GRANT SELECT ON [dbo].[DatabaseLog] TO [Linda] GO GRANT SELECT ON [dbo].[ErrorLog] TO [Linda] GO GRANT SELECT ON [HumanResources].[JobCandidate] TO [Linda] GO GRANT SELECT ON [HumanResources].[Shift] TO [Linda] GO GRANT SELECT ON [HumanResources].[Employee] TO [Linda] GO GRANT SELECT ON [HumanResources].[EmployeePayHistory] TO [Linda] GO |
上一篇:轻松掌握如何从命令行启动mysqld服务器 下一篇:如何用SQL语句查询表名和行数?
相关文章列表
- 数据库服务器负荷的分析与优化
- 如何优化 SQL Server 数据访问程序
- SQL Server存储过程介绍
- 如何巧妙利用SQL Server的EXISTS结构
- Windows Server 2008 R2 案例集:美国大陆
- SQL Server 2008在商务智能上的三个优
- 浅谈SQL Server 2008中的行压缩
- 优化SQL Server数据库查询技巧
- 浅析SQL Server全文检索查询
- 23年的追溯 详识微软SQL Server数据库
- 浅析如何掌握SQL Server的锁机制
- SQL Server数据表提示NOLOCK和READPAST
- 数据库事务隔离级别和锁实现机制
- 标准SQL规范中定义的四个事务隔离
- 教你快速掌握SQL Server锁的相关概念
- 通过SQLServer2008链接服务器管理异类
- 做好SQLServer 2008结尾日志备份
- 18句话入门SQLServer XML
- DB2数据库与SQLServer数据库的异同
- SQLServer存储过程入门案例详细分析
- SqlServer数据库备份的另类解决方案
- HDSAMS2000:SQLServer的最佳拍档
- Oracle和SQLServer之镜像比较
- SQLServer数据导入:行为规范


RSS订阅












