sql server:SQL Server quering roles, schemas, users,logins

来源:http://www.cnblogs.com/geovindu/archive/2017/05/17/6867015.html
-Advertisement-
Play Games

https://ask.sqlservercentral.com/questions/16078/schema-and-role-permissions-for-all-users-in-a-dat.html ...


--https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/managing-logins-users-and-schemas-how-to-topics
--
---SQL Server quering roles, schemas, users,logins 查詢三者的關係
--SQL Server 2000 system table
--select * from sysusers
--select * from syslogins
--SQL Server 2005 and later catalog VIEW

SELECT * FROM sys.database_principals

SELECT * FROM sys.schemas

SELECT * FROM sys.server_principals

---SQL Server 2000 - Using sysprotects
SELECT 
    su.name AS 'User'
  , CASE sp.protecttype
      WHEN 204 THEN 'GRANT w/ GRANT'
      WHEN 205 THEN 'GRANT'
      WHEN 206 THEN 'DENY' END AS 'Permission'
  , CASE sp.action
      WHEN 26 THEN 'REFERENCES'
      WHEN 193 THEN 'SELECT'
      WHEN 195 THEN 'INSERT'
      WHEN 196 THEN 'DELETE'
      WHEN 197 THEN 'UPDATE'
      WHEN 224 THEN 'EXECUTE' END AS 'Action'
  , so.name AS 'Object'
FROM sysprotects sp
  INNER JOIN sysusers su
    ON sp.uid = su.uid
  INNER JOIN sysobjects so
    ON sp.id = so.id
WHERE sp.action IN (26, 193, 195, 196, 197, 224) 
ORDER BY su.name, so.name; 
GO



---SQL Server 2005/2008 - Using sys.database_permissions
SELECT 
    USER_NAME(grantee_principal_id) AS 'User'
  , state_desc AS 'Permission'
  , permission_name AS 'Action'
  , CASE class
      WHEN 0 THEN 'Database::' + DB_NAME()
      WHEN 1 THEN OBJECT_NAME(major_id)
      WHEN 3 THEN 'Schema::' + SCHEMA_NAME(major_id) END AS 'Securable'
FROM sys.database_permissions dp
WHERE class IN (0, 1, 3)
AND minor_id = 0; 
GO

IF EXISTS ( SELECT *
 FROM tempdb.dbo.sysobjects
 WHERE id =
 OBJECT_ID(N'[tempdb].[dbo].[SQL_DB_REP]') )
 DROPTABLE [tempdb].[dbo].[SQL_DB_REP] ; /*I intentionally left out the space */
 GO
 CREATE TABLE [tempdb].[dbo].[SQL_DB_REP] 
 (
 [Server] [varchar](100) NOT NULL,
 [DB_Name] [varchar](70) NOT NULL,
 [User_Name] [nvarchar](90) NULL,
 [Group_Name] [varchar](100) NULL,
 [Account_Type] [varchar](22) NULL,
 [Login_Name] [varchar](80) NULL,
 [Def_DB] [varchar](100) NULL
 )
 ON [PRIMARY]
 INSERT INTO [tempdb].[dbo].[SQL_DB_REP]
 Exec sp_MSForEachDB 'SELECT CONVERT(varchar(100),
 SERVERPROPERTY(''Servername'')) AS Server,
 ''?'' as DB_Name,
 usu.name u_name
 ,CASE
 WHEN (usg.uid is null) then ''public''
 ELSE usg.name
 END as Group_Name
 ,CASE
 WHEN usu.isntuser=1 then ''Windows Domain Account''
 WHEN usu.isntgroup = 1 then ''Windows Group''
 WHEN usu.issqluser = 1 then ''SQL Account''
 WHEN usu.issqlrole = 1 then ''SQL Role''
 END as Account_Type
 ,lo.loginname
 ,lo.dbname as Def_DB
 FROM
 [?]..sysusers usu LEFT OUTER JOIN
 ([?]..sysmembers mem INNER JOIN [?]..sysusers usg ON
 mem.groupuid = usg.uid) ON usu.uid = mem.memberuid
 LEFT OUTER JOIN master.dbo.syslogins lo on usu.sid =
 lo.sid
 WHERE
 (usu.islogin = 1 and usu.isaliased = 0 and usu.hasdbaccess =
 1) and
 (usg.issqlrole = 1 or usg.uid is null)'
 GO
 
 SELECT [Server],
 [DB_Name],
 [User_Name],
 [Group_Name],
 [Account_Type],
 [Login_Name],
 [Def_DB]
 FROM [tempdb].[dbo].[SQL_DB_REP]
 GO

  https://ask.sqlservercentral.com/questions/16078/schema-and-role-permissions-for-all-users-in-a-dat.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 列類型: 1. 數值型 整數類型: tip: 在定義時,可使用unsigned標識沒有符號,若不寫就認為是有符號。 下圖為在表tb_int中,插入在正確範圍內的數值的事例: 當試圖插入超範圍的數值時,會出現下圖中的錯誤提示: 除了可以定義以上數值類型,還可以定義顯示寬度(通過規定顯示寬度,達到統一顯 ...
  • 今天發現mysql中有set這種數據類型,工作的業務中也使用到了。網上查閱資料後,小結一下 先總結一下兩者的分別 set和enum類似表單中的多選和單選,set和enum在資料庫內部是用整數表示的,顯示給我們看的可以是字元串(避免使用數字字元串) api中對兩種類型的解釋如下 兩種類型的數據個數有限 ...
  • 這個月碰到幾個人問我關於“SQL SERVER中INNER JOIN 與 IN兩種寫法的性能孰優孰劣?”這個問題。其實這個概括起來就是SQL Server中INNER JOIN與子查詢孰優孰劣(IN是子查詢的實現方式之一,本篇還是只對比INNER JOIN與子查詢IN的性能,如果展開INNER JO... ...
  • 前言 朋友介紹了一個工具,mycli,支持MySQL查詢語句自動補全等,這裡給大家介紹一下。 大家也可以直接去 "官網" 看一下,安裝使用都很簡單。 安裝 三種方式,簡單到不行 登錄資料庫 也是三種方式,很簡單 截圖 ...
  • MySQL資料庫操作常用命令DOS連接資料庫1.安裝MySQL配置好環境2.運行cmd命令net start mysql3.找到mysql文件根目錄輸入命令mysql -h localhost -u root -p 回車輸入密碼連接資料庫成功MySQL常用命令show databases, 顯示全部 ...
  • 背景介紹 在一般的業務場景中, 初始的時候簡單的自增數(比如MySQL 自增鍵)就可以很好的滿足需求, 不過隨著業務的發展和驅動, 尤其是在分散式的場景中, 如何生成全局的唯一 id 便成了需要慎重考慮的事情. 業務之間如何協調, 生成的序列是否還有其它需求等都需要重新設計, 下文則介紹生成唯一 i ...
  • 介紹 從系統管理員或 DBA 的角度來講, 總期望將線上的各種變更限制在一個可控的範圍內, 減少一些不確定的因素. 這樣做有幾點好處: 從這三點來看, 有很多種方式可以實現, 比如通過 migrate 等工具強制所有的操作都以統一的方式執行, 這需要開發人員做更多的配合, 所以這類工具在非規模話的業 ...
  • 很多童鞋在啟動mysql的時候,碰到過這個錯誤, 首先,澄清一點,出現這個錯誤的前提是:通過服務腳本來啟動mysql。通過mysqld_safe或mysqld啟動mysql實例並不會報這個錯誤。 那麼,出現這個錯誤的原因具體是什麼呢? 哈哈,對分析過程不care的童鞋可直接跳到文末的總結部分~ 總結 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...