ฉันรู้ว่าฉันสามารถสอบถามสิทธิ์ที่มีประสิทธิภาพโดยใช้sys.fn_my_permissions
:
USE myDatabase;
SELECT * FROM fn_my_permissions('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name
------------------------------------------------
dbo.myTable | | SELECT
dbo.myTable | | UPDATE
...
สิ่งนี้บอกฉันว่าผู้ใช้ปัจจุบันมีสิทธิ์ SELECT, INSERT, UPDATE และอื่น ๆmyTable
ในฐานข้อมูลmyDatabase
หรือไม่
เป็นไปได้ไหมที่จะค้นหาสาเหตุที่ผู้ใช้มีสิทธิ์เหล่านี้อย่างง่ายดาย ตัวอย่างเช่นฉันชอบมีฟังก์ชันfn_my_permissions_ex
ที่แสดงreason
คอลัมน์เพิ่มเติม:
USE myDatabase;
SELECT * FROM fn_my_permissions_ex('dbo.myTable', 'OBJECT')
entity_name | subentity_name | permission_name | reason
------------------------------------------------------------------------------------------------------------------------------------
dbo.myTable | | SELECT | granted to database role public
dbo.myTable | | UPDATE | member of group MYDOMAIN\Superusers, which belongs to database role db_datawriter
...
น่าเสียดายที่ฉันไม่พบฟังก์ชันดังกล่าวในเอกสารคู่มือ SQL Server มีเครื่องมือหรือสคริปต์ที่มีฟังก์ชั่นนี้หรือไม่?
ทำไมคุณไม่ส่งออกเป็นไฟล์ txt คุณใช้ OS อะไร?
—
jcho360
@ jcho360: ไม่มีฟังก์ชั่น
—
Heinzi
fn_my_permission_ex
ดังนั้นฉันไม่สามารถส่งออกได้ ฉันกำลังถามว่ามีฟังก์ชั่นหรือเครื่องมือที่มีฟังก์ชั่นนั้นหรือไม่
คุณใช้ SSMS หรือไม่
—
jcho360
คำถามที่น่ากลัว ฉันพยายามคิดออกมาเป็นเวลานานมาก fn_my_permissions kinda ทำงานได้ แต่มักจะแสดงสิทธิ์ที่ฉันไม่สามารถติดตามลงไปที่จุดกำเนิดได้
—
PseudoToad