เปิดใช้งานการติดตามเริ่มต้น แต่ไม่ทำงาน


9

เมื่อฉันสอบถามการกำหนดค่าของการติดตามเริ่มต้นมันจะเปิดใช้งาน:

exec sp_configure 'default trace enabled';
-->
name                    minimum  maximum  config_value  run_value
default trace enabled         0        1             1          1

แต่เมื่อฉันค้นหาsys.tracesพา ธ มันจะส่งคืน rowset ที่ว่างเปล่า:

select * from sys.traces;

สิ่งใดที่สามารถอธิบายได้ว่าไม่มีร่องรอยการเปิดใช้งาน


@AaronBertrand: select * from sys.tracesส่งคืน rowset ที่ว่างเปล่า
Andomar

นอกจากนี้ฉันเคยได้ยินกรณีที่การสืบค้นกลับตายเพราะไดรฟ์ที่เขียนนั้นถูกเติมให้เต็ม
Aaron Bertrand

@AaronBertrand: ผู้ดูแลระบบบอกว่าไดรฟ์นั้นเต็มแล้วไม่กี่วันที่ผ่านมา การเริ่มบริการ SQL Server จะเริ่มการสืบค้นกลับเริ่มต้นด้วยหรือไม่
Andomar

การติดตามที่ถูกหยุดไว้นั้นเป็นครั้งแรกของฉัน แต่ก็EXEC sp_trace_setstatus @traceid = 1, @status = 0นำกลับมาด้วยThe default trace cannot be stopped or modified.ดังนั้นจึงไม่แน่ใจว่าจะสามารถหยุดได้หากไม่มีข้อผิดพลาดที่ทำให้ไม่สามารถทำงานได้ มีอะไรในบันทึกข้อผิดพลาดหรือไม่
Martin Smith

@Martin ถูกต้องคุณไม่สามารถหยุดการติดตามเริ่มต้นได้ด้วยตนเอง
Aaron Bertrand

คำตอบ:


13

ฉันจะบอกว่ามีความสัมพันธ์ที่แข็งแกร่งระหว่างเหตุการณ์นอกพื้นที่ของคุณกับร่องรอยที่หายไป โปรดทราบว่าsp_configureตัวเลือกเพียงบอกคุณว่าการติดตามเริ่มต้นถูกเปิดใช้งาน แต่ไม่ได้หมายความว่ามันกำลังทำงานอยู่หรือมีอยู่แล้ว โปรดทราบว่าsys.tracesไม่ใช่ตาราง แต่เป็นมุมมอง:

create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)

อะไรTABLE SYSTRACESrowset ให้? มันทำงานยังไง? มีการกรองผลลัพธ์อย่างไร การเดาของคุณดีเท่ากับของฉัน อาจเป็นไปได้ว่าการติดตามยังคงมีอยู่ แต่อยู่ในสถานะที่ป้องกันไม่ให้ถูกเปิดเผยโดยมุมมองนี้ และอาจอยู่ในสถานะที่ยังคงป้องกันไม่ให้เริ่มต้นแม้หลังจากรีสตาร์ทบริการ

ขั้นแรกตรวจสอบให้แน่ใจว่าตำแหน่งที่ตั้งของการติดตามเริ่มต้นมีพื้นที่เพียงพอบัญชีบริการ SQL Server ยังคงมีสิทธิ์เพียงพอที่จะเขียนลงไปคุณไม่ได้อยู่ภายใต้โควต้าพื้นที่ใด ๆ ฯลฯ คุณสามารถรับตำแหน่งจากรีจิสทรีได้:

HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\

เมื่อคุณแน่ใจว่า SQL Server ควรจะสามารถเขียนไปยังโฟลเดอร์นี้ได้จากนั้นคุณสามารถปิดใช้งานและเปิดใช้งานการติดตามเริ่มต้นอีกครั้ง:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 1;
GO
RECONFIGURE WITH OVERRIDE;

คุณไม่ควรจะต้องเริ่มต้นใหม่บริการ SQL Server ที่จุดนี้ แต่อาจจะเป็นครั้งสุดท้ายเตะในกางเกงของ SQL Server sys.tracesถ้าคุณยังไม่เห็นแถวใน โปรดทราบว่าtrace_idคุณจะไม่ได้รับการรับประกันว่าจะอยู่ที่ 1


ขอขอบคุณปิดการใช้งานและเปิดใช้งานอีกครั้ง with overrideผมไม่ได้ใช้ บันทึกข้อผิดพลาดแสดงเหตุการณ์นอกพื้นที่แน่นอน
Andomar

1
@ Andomar ขอโทษwith overrideเป็นนิสัย
Aaron Bertrand

1

ฉันมีปัญหาเดียวกันหลังจากที่ไดรฟ์เต็ม การติดตามเริ่มต้นถูกเปิดใช้งาน แต่ไม่ได้ทำงานอยู่ ปิดการใช้งานและเปิดใช้งานใหม่ได้ทันทีโดยไม่ต้องหยุดบริการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.