การแก้ไข: การ fn_get_sql ฟังก์ชันส่งกลับข้อความ SQL สำหรับหมายเลขอ้างอิงในตารางระบบ Sysprocesses

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 325607 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายการใช้งานโปรแกรมแก้ไขด่วนสำหรับ SQL Server 2000 ที่ประมวลผลการเปลี่ยนแปลงต่อไปนี้:
  • โปรแกรมแก้ไขด่วนสร้างใหม่ fn_get_sql ฟังก์ชัน table-valued ระบบ
  • โปรแกรมแก้ไขด่วนเพิ่มคอลัมน์ใหม่เหล่านี้สามจุดสิ้นสุดของการ ต้นแบบ...sysprocesses ตารางของระบบ:
    • sql_handle(ไบนารี)
    • stmt_start(int)
    • stmt_end(int)

  • โปรแกรมแก้ไขด่วนสร้างการตั้งค่าสถานะการสืบค้นกลับใหม่ ค่าสถานะการสืบค้นกลับ 2861

การแก้ไข

เมื่อต้องแก้ไขปัญหานี้ ขอรับ service pack ล่าสุดสำหรับ Microsoft SQL Server 2000 สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
290211 วิธีการขอรับ service pack ล่าสุดของ SQL Server 2000
หมายเหตุ โปรแกรมแก้ไขด่วนดังต่อไปนี้ถูกสร้างขึ้นก่อนการเปิดตัวของ Microsoft SQL Server 2000 Service Pack 3

แฟ้มโปรแกรมแก้ไขด่วน

ไม่มีโปรแกรมแก้ไขด่วนสำหรับ SQL Server 2000 ที่ใช้ฟังก์ชันfn_get_sql

ติดต่อฝ่ายบริการสนับสนุนผลิตภัณฑ์ของ Microsoft เมื่อต้องการ ขอรับการแก้ไข เวอร์ชันภาษาอังกฤษของ hotfix นี้มีแอตทริบิวต์แฟ้ม (หรือแอตทริบิวต์ของแฟ้มรุ่นที่ใหม่กว่า) ซึ่งแสดงอยู่ในตารางต่อไปนี้ วันและเวลาสำหรับแฟ้มเหล่านี้จะแสดงรายการในเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้มข้อมูล จะถูกแปลงเป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น การ โซนเวลา แท็บในเครื่องมือ'วันและเวลา'ใน'แผงควบคุม'
   Date         Time      Version    Size              File name
   -----------------------------------------------------------------

   07/01/2002   4:50 PM   8.00.652   7,285 kilobytes   Sqlservr.exe
				
หมายเหตุ เนื่องจากการอ้างอิงแฟ้ม โปรแกรมแก้ไขด่วนล่าสุด หรือลักษณะการทำงาน ที่ประกอบด้วยแฟ้มที่ยังอาจประกอบด้วยแฟ้มเพิ่มเติมได้

สิ่งสำคัญ ถ้าคุณต้องการทำงานของโปรแกรมแก้ไขนี้ คุณต้องใช้การสร้าง Sqlservr.exe กว่า หรือเท่ากับ 8.00.652 และ คุณต้องรันการ Sp2_qfe_serv_uni.sql แฟ้มที่รวมอยู่ในโปรแกรมแก้ไขนี้ สำหรับข้อมูลเพิ่มเติม ให้ดูอ่าน Readme.txt แฟ้มที่รวมอยู่ในแฟ้มการแก้ไข

สถานะ

Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ที่ระบุไว้ในตอนต้นของบทความนี้ก่อนแก้ไขปัญหานี้ใน Microsoft SQL Server 2000 Service Pack 3

ข้อมูลเพิ่มเติม

นี่คือคำจำกัดความและไวยากรณ์สำหรับฟังก์ชัน table-valued ระบบfn_get_sql

fn_get_sql

ส่งกลับค่าข้อความ SQL ที่อ้างถึงสำหรับหมายเลขอ้างอิงที่ระบุ

ไวยากรณ์

fn_get_sql ([@SqlHandle =]SqlHandle)

อาร์กิวเมนต์

[@SqlHandle =] SqlHandle

ค่าไบนารีการจัดการงาน SqlHandle เป็นbinary(20)โดยมีค่าเริ่มต้น

ตารางที่ส่งคืน

ยุบตารางนี้ขยายตารางนี้
ชื่อคอลัมน์ชนิดข้อมูลคำอธิบาย
dbidsmallintรหัสฐานข้อมูล NULL ในกรณีของคำสั่ง SQL แบบเฉพาะกิจ
objectidintID ของวัตถุฐานข้อมูล NULL ในกรณีของ SQL แบบเฉพาะกิจ คำสั่ง
หมายเลขsmallintหมายเลขในขั้นตอนการจัดกลุ่มถ้ามีการจัดกลุ่ม 0สำหรับรายการที่ไม่ใช่ขั้นตอน NULL ในกรณีของกิจ คำสั่ง SQL
การเข้ารหัสลับบิตบ่งชี้ว่า ถ้า วัตถุถูกเข้ารหัสลับ:
0 =ไม่เข้ารหัสลับ
1 =การเข้ารหัสลับ
ข้อความข้อความข้อความ SQL NULL ในกรณีของวัตถุที่เข้ารหัสลับ

Remarks

Fn_get_sqlคือระบบไลน์ตารางฟังก์ชันที่ส่งกลับค่าข้อความสำหรับ SQL SQLHANDLE ที่ระบุ คุณสามารถขอรับ SQLHANDLE ถูกต้องจากคอลัมน์ของตารางระบบsysprocessessql_handle

ถ้าคุณส่งหมายเลขอ้างอิงที่อีกต่อไป มีอยู่ในแคชfn_get_sqlจะส่งกลับชุดผลลัพธ์ที่ว่างเปล่าที่มีอยู่ ถ้าคุณส่งการจัดการไม่ถูกต้อง ชุดงานจะยกเลิก และคุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ ข้อความ:
เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 569 ระดับ 16 เขต 1 Fn_get_sql กระบวนงาน บรรทัดที่ 12 หมายเลขอ้างอิงที่ส่งผ่านไปยัง fn_get_sql ไม่ถูกต้อง
SQL Server ไม่แคชคำสั่งบาง Transact-SQL เช่นจำนวนมาก การดำเนินการคำสั่งและคำสั่ง ด้วยตัวอักษรสตริงที่ใหญ่กว่ากิโลไบต์ 8 จับในคำสั่งเหล่านั้นจะไม่ retrievable ผ่านฟังก์ชันfn_get_sql

คอลัมน์ข้อความสำหรับข้อความที่อาจมีการกรองข้อมูล ประกอบด้วยรหัสผ่าน ทบทวนหัวข้อ "สืบค้นกลับการจำกัด" ใน SQL Server หนังสือ ขั้นตอนที่ไม่ได้เก็บไว้แบบออนไลน์สำหรับรายละเอียดเกี่ยวกับการรักษาความปลอดภัย ตรวจสอบ

การอนุญาต

เฉพาะสมาชิกของเซิร์ฟเวอร์ถาวร sysadminสามารถเรียกใช้ฟังก์ชันfn_get_sql

ตัวอย่าง

ข้อมูลที่ส่งกลับ โดยฟังก์ชันfn_get_sqlจะคล้ายกับคำสั่ง DBCC INPUTBUFFER ใช้ฟังก์ชันfn_get_sqlในสถานการณ์ที่เป็น DBCC INPUTBUFFER จำกัด เช่น เป็น:
  • เมื่อเหตุการณ์ได้มากกว่า 255 อักขระ
  • เมื่อคุณต้องการกลับไปที่ซ้อนกันปัจจุบันสูงสุด ระดับของกระบวนงานเก็บไว้ ตัวอย่างเช่น คุณมีกระบวนงานที่เก็บไว้สองที่ มีชื่อว่าsp_1และsp_2 ถ้าเรียกกระบวนการsp_2กระบวนงานที่เก็บไว้ และคุณได้รับข้อความแสดงหมายเลขอ้างอิงจากตารางระบบsysprocessesขณะsp_2กำลังทำการจัดเก็บsp_1 , fn_get_sqlฟังก์ชันจะส่งกลับข้อมูลเกี่ยวกับsp_2 นอกจากนี้ ฟังก์ชันfn_get_sqlส่งกลับค่ากระบวนงานเก็บไว้ทั้งหมดที่สูงสุด ระดับการซ้อนปัจจุบัน
ผู้ดูแลฐานข้อมูลสามารถใช้ฟังก์ชันfn_get_sqlเพื่อช่วยวินิจฉัยปัญหากระบวนการ หลังจาก ผู้ดูแลระบุปัญหากระบวนการของเซิร์ฟเวอร์ ID (SPID), ผู้ดูแล สามารถเรียก SQLHANDLE ที่สำหรับ SPID ที่ และจากนั้นเรียกใช้ฟังก์ชันfn_get_sqlกับหมายเลขอ้างอิง และปรับค่าเริ่มต้นและสิ้นสุดการใช้ กำหนดข้อความ SQL ของปัญหา SPID ตัวอย่างเช่น:
DECLARE @Handle binary(20)
SELECT @Handle = sql_handle FROM sysprocesses WHERE spid = 52
SELECT * FROM ::fn_get_sql(@Handle) 
				
นอกจากนี้คุณยังสามารถใช้ฟังก์ชันfn_get_sqlเพื่อตรวจสอบเซิร์ฟเวอร์อย่างต่อเนื่อง ตัวอย่างเช่น การ เครื่องมือไคลเอนต์ที่ดึงข้อมูล SQLHANDLE และคำสั่งเริ่มต้นเป็นครั้งคราว และสิ้นสุดชดเชยจากตารางระบบsysprocesses เครื่องมือยังคงมีแคของข้อความ SQL ด้วยการ หมายเลขอ้างอิง SQL เป็นคีย์ไม่ซ้ำกันและผลลัพธ์ของฟังก์ชันfn_get_sqlเป็นค่า สำหรับแต่ละแถวใน rowset ตารางระบบsysprocessesเครื่องมือค้นหาข้อความในเว็บไซต์ของแคช ตามค่า SQLHANDLE ถ้าข้อความไม่ได้อยู่ในแคชภายในเครื่องมือ เครื่องมือแล้ว เรียกฟังก์ชันfn_get_sqlได้รับข้อความ และบันทึกไว้ในการแคช

ค่าสถานะการสืบค้นกลับ 2861

ค่าสถานะการสืบค้นกลับ 2861 ให้ SQL Server การเก็บแผนศูนย์ต้นทุนใน แคช ซึ่ง SQL Server จะโดยทั่วไปจะไม่แคช (เช่นกิจอย่างง่าย แบบสอบถาม คำสั่งการตั้งค่า ทรานแซคชัน และผู้อื่น)
  • ถ้าค่าสถานะการสืบค้นกลับ 2861, fn_get_sqlฟังก์ชันสามารถส่งกลับข้อความ SQL สำหรับกิจกรรมที่มีค่าเป็นศูนย์ แผนต้นทุน หากปิดการตั้งค่าสถานะการสืบค้นกลับ 2861 ฟังก์ชันfn_get_sqlไม่สามารถคืนค่าข้อความ SQL สำหรับกิจกรรมที่เป็นศูนย์ แผนต้นทุน
  • โดยค่าเริ่มต้น ค่าสถานะการสืบค้นกลับ 2861 ถูกปิดใช้งานเมื่อคุณ ใช้โปรแกรมแก้ไขนี้

Remarks

เพิ่มจำนวนวัตถุในขั้นตอนการแคเมื่อสืบค้นกลับ ค่าสถานะ 2861 เปิดอยู่ เนื่องจากวัตถุเพิ่มเติมมีขนาดเล็กดังนั้น คุณจะ ดูเพิ่มขึ้นขนาดเล็กในหน่วยความจำ ที่แคตอนถ่ายขึ้น

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

โดยทั่วไป ในระบบที่ใหญ่กว่าหน่วยความจำขนาดฐานข้อมูลที่เป็น ขนาด ระบบอยู่ภายใต้บางไวต่อแรงกดหน่วยความจำที่คาดไว้ ถ้าการไวต่อแรงกดหน่วยความจำ มีหน่วยความจำสำหรับอื่น ๆ ซึ่ง วัตถุ กระบวนการ lazywriter จะ deallocate วัตถุในกระบวนการแคช ซึ่งจะผูกขนาดนั้น กระบวนการแคช และจะช่วยลดผลเสียต่อการที่เป็นไปได้ของการเปลี่ยนแปลงนี้

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

ถ้าคุณสังเกตส่งผลเสียต่อประสิทธิภาพการทำงานระบบ ทำตามขั้นตอนเหล่านี้:
  1. ค่าสถานะการสืบค้นกลับ 2861 ปิดการใช้งาน
  2. เรียกใช้คำสั่ง DBCC FREEPROCCACHE จากตัววิเคราะห์คำถาม คุณไม่ต้องรีสตาร์ทเซิร์ฟเวอร์ SQL

คุณสมบัติ

หมายเลขบทความ (Article ID): 325607 - รีวิวครั้งสุดท้าย: 16 มกราคม 2556 - Revision: 5.0
ใช้กับ
  • Microsoft SQL Server 2000 Standard Edition
Keywords: 
kbhotfixserver kbqfe kbsqlserv2000sp3fix kbfix kbinfo kbsqlserv2000presp3fix kbmt KB325607 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:325607

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com