图解SQL Server 安全函数的使用
生活随笔
收集整理的這篇文章主要介紹了
图解SQL Server 安全函数的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一 操作實例
我自己電腦上Sql Server的安全函數如下;?
返回調用方對服務器的有效權限的列表;
?
返回調用方對OA_DB 數據庫的有效權限的列表;
?
返回調用方對OA_DB 數據庫內存儲過程usersUpdate的有效權限的列表;
?
列出另一個用戶的有效權限
當前用戶是sa,沒有別的用戶,以sa來示例;
返回數據庫用戶 sa 對 OA_DB 數據庫內 bbs 表的有效權限的列表。 調用方需要對用戶 sa 具有 IMPERSONATE 權限。
出錯;改為對用戶dbo則可;
?
可以是另一個用戶;
?
檢查當前用戶是否為數據庫角色或 Windows 域組的成員;
?
確定當前用戶能否執行 CREATE TABLE 語句;
?
返回 用戶 dbo 的標識號;
?
找到默認跟蹤的文件路徑;
?
二 實例代碼
?
SELECT * FROM fn_my_permissions(NULL, 'SERVER');GOUSE OA_DB SELECT * FROM fn_my_permissions (NULL, 'DATABASE'); GO USE OA_DB SELECT * FROM fn_my_permissions('usersUpdate', 'OBJECT') ORDER BY subentity_name, permission_name ; GO EXECUTE AS USER = 'sa'; SELECT * FROM fn_my_permissions('bbs', 'OBJECT') ORDER BY subentity_name, permission_name ; REVERT; GO SELECT * FROM fn_my_permissions('Shipping47', 'CERTIFICATE'); GOUSE AdventureWorks2012; SELECT * FROM fn_my_permissions('ProductDescriptionSchemaCollection', 'XML SCHEMA COLLECTION'); GO --返回調用方對當前數據庫中用戶 MalikAr 的有效權限的列表。 SELECT * FROM fn_my_permissions('MalikAr', 'USER'); GO --列出另一個登錄名的有效權限 EXECUTE AS LOGIN = 'WanidaBenshoof'; SELECT * FROM fn_my_permissions('AdventureWorks2012.HumanResources.Employee', 'OBJECT') ORDER BY subentity_name, permission_name ; REVERT; GO -- Test membership in db_owner and print appropriate message. IF IS_MEMBER ('db_owner') = 1 PRINT 'Current user is a member of the db_owner role' ELSE IF IS_MEMBER ('db_owner') = 0 PRINT 'Current user is NOT a member of the db_owner role' ELSE IF IS_MEMBER ('db_owner') IS NULL PRINT 'ERROR: Invalid group / role specified'; GO -- Execute SELECT if user is a member of ADVWORKS\Shipping. IF IS_MEMBER ('ADVWORKS\Shipping') = 1 SELECT 'User ' + USER + ' is a member of ADVWORKS\Shipping.'; GO IF PERMISSIONS()&2=2 CREATE TABLE test_table (col1 INT) ELSE PRINT 'ERROR: The current user cannot create a table.'; IF PERMISSIONS(OBJECT_ID('AdventureWorks2012.Person.Address','U'))&8=8 PRINT 'The current user can insert data into Person.Address.' ELSE PRINT 'ERROR: The current user cannot insert data into Person.Address.'; --對可授予的權限使用 PERMISSIONS 函數 IF PERMISSIONS(OBJECT_ID('AdventureWorks2012.Person.Address','U'))&0x80000=0x80000 PRINT 'INSERT on Person.Address is grantable.' ELSE PRINT 'You may not GRANT INSERT permissions on Person.Address.'; USE OA_DB; SELECT USER_ID('dbo');GO select * from ::fn_trace_getinfo(0)?
?
?
三 參考資料
https://msdn.microsoft.com/zh-cn/LIBRARY/ms186236.aspx 安全函數 (Transact-SQL) http://www.cnblogs.com/zhijianliutang/p/4113911.html SQL Server中關于跟蹤(Trace)那點事 https://msdn.microsoft.com/en-us/library/ms173875.aspx sys.fn_trace_getinfo (Transact-SQL) http://www.codes51.com/article/detail_94669.html SQL Server中的跟蹤(Trace)介紹?
?
?
總結
以上是生活随笔為你收集整理的图解SQL Server 安全函数的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解SQL子查询实例
- 下一篇: 图解动软代码生成器使用