คำถามติดแท็ก debugging

1
ฉันจะทราบได้อย่างไรว่า * ทำไม * ผู้ใช้มีสิทธิ์ที่มีประสิทธิภาพบางอย่าง
ฉันรู้ว่าฉันสามารถสอบถามสิทธิ์ที่มีประสิทธิภาพโดยใช้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 …

2
ฉันจะทราบได้อย่างไรว่าเหตุใดเอกสาร MongoDB จึงไม่ผ่านการตรวจสอบ
ฉันจะตรวจสอบได้อย่างไรว่าเหตุใดการแทรกเอกสาร MongoDB จึงล้มเหลวในการตรวจสอบ สิ่งที่ฉันได้รับกลับมาคือ writeError ที่ระบุว่า "การตรวจสอบเอกสารล้มเหลว" ซึ่งไม่ได้มีประโยชน์มาก (สิ่งนี้เกิดขึ้นบ่อยและฉันต้องการที่จะเข้าใจวิธีการแก้ไขข้อบกพร่องเหล่านี้อย่างถูกต้องแทนที่จะขอความช่วยเหลือจากตัวอย่างที่เฉพาะเจาะจง)

1
ผลลัพธ์ที่น่าแปลกใจสำหรับประเภทข้อมูลที่มีตัวแก้ไขประเภท
ในขณะที่พูดคุยโซลูชัน CTE แบบเรียกซ้ำสำหรับคำถามนี้: รับ 5 ค่าที่แตกต่างล่าสุดสำหรับแต่ละ ID @ypercubeพบข้อผิดพลาดที่น่าแปลกใจซึ่งทำให้เราตรวจสอบการจัดการกับตัวดัดแปลงประเภท เราพบพฤติกรรมที่น่าประหลาดใจ 1. Type cast ยังคงประเภทโมดิฟายเออร์ในบางบริบท แม้เมื่อสั่งไม่ให้ ตัวอย่างพื้นฐานที่สุด: SELECT 'vc8'::varchar(8)::varchar หนึ่งอาจคาดหวังvarchar(ไม่มีตัวดัดแปลง) อย่างน้อยฉันจะ แต่ผลลัพธ์คือvarchar(8)(พร้อมตัวดัดแปลง) กรณีที่เกี่ยวข้องจำนวนมากในซอด้านล่าง 2. การต่อข้อมูล Array สูญเสียโมดิฟายเออร์ในบริบทบางอย่าง โดยไม่จำเป็นต้องใช้ดังนั้นข้อผิดพลาดนี้อยู่ฝั่งตรงข้าม: SELECT ARRAY['vc8']::varchar(8)[] , ARRAY['vc8']::varchar(8)[] || 'vc8'::varchar(8) นิพจน์แรกให้ผลvarchar(8)[]ตามที่คาดไว้ แต่ข้อที่ 2 หลังจากการต่อข้อมูลอื่นvarchar(8)จะถูกรดน้ำลงไปเพียงvarchar[](ไม่มีตัวปรับแต่ง) พฤติกรรมที่คล้ายกันจากarray_append()ตัวอย่างในซอด้านล่าง ทั้งหมดนี้ไม่สำคัญในบริบทส่วนใหญ่ Postgres จะไม่สูญเสียข้อมูลและเมื่อกำหนดให้กับคอลัมน์ค่าจะถูกบังคับให้เป็นประเภทที่ถูกต้องอย่างไรก็ตาม อย่างไรก็ตามการทำผิดในทิศทางตรงกันข้ามจะทำให้เกิดข้อยกเว้นที่น่าประหลาดใจ: 3. Recursive CTE ต้องการประเภทข้อมูลให้ตรงกัน รับตารางง่ายนี้ CREATE TABLE a ( …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.