การจัดรูปแบบ T-SQL ใน SSMS 2012


39

ตามเอกสาร Microsoft นี้:

http://msdn.microsoft.com/en-us/library/ms174205.aspx

ฉันควรจะสามารถใช้ ctrl + K แล้ว ctrl + D เพื่อจัดรูปแบบเอกสาร SQL ของฉันใน SQL Server Management Studio 2012 แต่เมื่อฉันใช้คอมโบนั้นฉันได้รับข้อผิดพลาด:

การรวมคีย์ (Ctrl + K, Ctrl + D) ถูกผูกไว้กับคำสั่ง (Format Document) ซึ่งไม่สามารถใช้งานได้ในปัจจุบัน

ฉันกำลังพยายามแก้ไขเอกสาร SQL ที่มีอยู่ซึ่งไม่มีการจัดรูปแบบเลยซึ่งทำให้อ่านยากมาก ไม่มีใครรู้วิธีการทำให้คำสั่งจัดรูปแบบเอกสารพร้อมใช้งานเพื่อให้ฉันสามารถจัดรูปแบบ SQL รหัสนี้สำหรับฉันได้หรือไม่


ผมคิดว่าคำสั่งที่Available only in the text editorเป็นวิธีการเขียนที่มีเทคโนโลยีของบอกว่า "ไม่ได้แก้ไขแบบสอบถาม" โดยไม่ต้องชัดเจนโทรออกเชิงลบ
billinkc

1
@billinkc ฉันไม่คิดว่ามันค่อนข้างถูก เครื่องมือแก้ไขข้อความคือ "เครื่องมือแก้ไขข้อความค้นหา" ที่ใช้สำหรับทั้ง Transact-SQL และ XMLไม่ใช่เครื่องมือแก้ไขข้อความค้นหาเมื่อใช้งานกับ XML ผมคิดว่าเอกสารเป็นบิตมากกว่าที่มีแนวโน้มและผมแสดงความเห็นดังกล่าวในรายการที่เชื่อมต่อ
Aaron Bertrand

คำตอบ:


42

การผสมแป้นพิมพ์ที่คุณตามหลัง ( Ctrl+ K, Ctrl+ D) มีไว้สำหรับ "การจัดรูปแบบ" - แต่ไม่เท่าที่คุณคาดหวัง มันไม่ใช่ prettifier ใช้เพื่อแทรกระยะห่างและแท็บที่ถูกต้องตามที่พบในTools > Options > Text Editor > Transact-SQL > General/Tabsดังนั้นหากคุณเน้นส่วนของข้อความและกดแป้นคีย์บอร์ดมันควรจะแปลงแท็บเป็น 4 ช่องว่าง (ถ้าคุณเลือกแทรก ช่องว่าง) ใช้ประเภทของการเยื้องที่คุณระบุ ฯลฯ

ตัวเลือกนี้ไม่ได้มีไว้เพื่อสร้างรหัสให้อ่านง่ายขึ้น - นี่ไม่ใช่ฟังก์ชั่นการใช้งานที่ปัจจุบัน Studio การจัดการเสนอ แม้ว่าจะมีตัวเลือกบุคคลที่สามหลายตัว แต่บางตัวเป็นภายนอกกับ Management Studio เช่น:

และมีโปรแกรมเสริมสำหรับระดับความช่วยเหลือในการจัดรูปแบบต่าง ๆ ภายในตัวแก้ไข:

ตอนนี้เหตุผลที่คุณได้รับข้อความ ...

การรวมคีย์ (Ctrl + K, Ctrl + D) ถูกผูกไว้กับคำสั่ง (Format Document) ซึ่งไม่สามารถใช้งานได้ในปัจจุบัน

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

  1. ไปที่ Tools > Options > Environment > Keyboard
  2. วางเคอร์เซอร์ของคุณลงในPress shortcut keys:ช่อง
  3. กดCtrl+ K, Ctrl+D
  4. เปลี่ยนรายการShortcut currently used by:แบบหล่นลงจากDataWarehouse Designerเป็นText Editor

    ป้อนคำอธิบายรูปภาพที่นี่

  5. กดตกลง

ตอนนี้ควรจะแมปชุดแป้นพิมพ์กับตัวแก้ไขข้อความ แต่ Management Studio ย้อนกลับไปหลังจากกด OK (คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปดังนั้นฉันคิดว่าปัญหาคือเอกสารเชื่อว่าการทำงานนี้มีอยู่ แต่การจัดการ Studio รู้ดีกว่าและไม่ได้เสนอให้ (และ Microsoft อาจจะเขียนสิ่งนี้เป็นข้อผิดพลาดในเอกสารและแก้ไขให้ถูกต้องแทนที่จะเป็นข้อบกพร่องในเครื่องมือ) อาจมีความหวังในอนาคต แต่สำหรับตอนนี้นี่เป็นปัญหาที่เป็นที่รู้จักและถูกเพิกเฉยเป็นส่วนใหญ่คุณจะทราบว่าFormattingแท็บที่เอกสารอ้างอิงอ้างถึงไม่มีอยู่ (แม้ว่าจะมีไว้สำหรับ XML ซึ่งการรวมแป้นพิมพ์ทำงาน) เอกสารอาจจะระบุ:

ใช้การเยื้องและการจัดรูปแบบพื้นที่สำหรับภาษาที่ระบุในบานหน้าต่างการจัดรูปแบบของภาษาในส่วนตัวแก้ไขข้อความในกล่องโต้ตอบตัวเลือก มีเฉพาะในเครื่องมือแก้ไขข้อความและสำหรับบางภาษาเท่านั้น

อีกวิธีหนึ่งในการทำความเข้าใจว่าตัวเลือกการจัดรูปแบบประเภทใดที่ SSMS เสนอให้คือการไปที่Tools > Customize > Commands > Edit > Add Command... > Formatและดูรายการคำสั่งที่เป็นไปได้ที่นั่น ไม่มีสิ่งใดที่บ่งบอกว่ามีความรู้เกี่ยวกับภาษาจริงดังนั้นจึงไม่ทราบว่าจะแทรกตัวแบ่งบรรทัดหรือเพิ่มการเยื้องหรือความช่วยเหลือเพิ่มเติมในวงเล็บเป็นต้น

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณต้องการการจัดรูปแบบเฉพาะภาษาเพื่อให้โค้ด T-SQL ที่มีอยู่สามารถอ่านได้มากขึ้นคุณจะไม่ได้รับมากจาก SSMS และคุณจะต้องหาตัวเลือกอื่น ๆ


1
ฉันเคยมีอาการและพฤติกรรมแบบเดียวกันกับที่ OP อธิบายเช่นเดียวกับ Aaron ใน SSMS 2016 อย่างไรก็ตามฉันสามารถทำให้มันทำงานได้อย่างถูกต้อง กุญแจสำคัญคือการลบคำสั่งทั้งหมดที่ถูกผูกไว้กับการCtrl+K, Ctrl+Dใช้Removeปุ่มก่อนจากนั้นทำตามโปรแกรมสี่ขั้นตอนของแอรอนในการผูกคีย์บอร์ดตามที่กำหนดไว้ข้างต้น ( Tools > Options > Environment > Keyboard) นี่คือภาพของสิ่งที่ฉันOptionsกล่องโต้ตอบลักษณะชอบทุกครั้งที่มีการติดตั้ง: pasteboard.co/GDYkh3h.jpg
Mass Dot Net

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

12

ฉันไม่เชื่อว่านี่เป็นไปได้ใน SSMS มีรายการเชื่อมต่อเปิดขึ้นสำหรับคุณลักษณะนี้

สิ่งที่ผมเองชอบที่จะใช้สำหรับการจัดรูปแบบ SQL รหัสไม่ดีเป็นโปรแกรมเว็บบนแย่ SQL มันทำงานได้ดีมากในการจัดรูปแบบโค้ด SQL ตามข้อกำหนดของคุณ แม้กระทั่งสร้าง HTML หากคุณต้องการ ฉันไม่ได้ใช้ปลั๊กอิน SSMS หรือสิ่งที่ส่งมอบอื่น ๆ ที่พวกเขาโฆษณาฉันมักจะกระโดดบนเว็บไซต์เพื่อทำการฟอร์แมตแบบรวดเร็วแล้วคัดลอก / วางลงใน SSMS


ขอบคุณสำหรับคำแนะนำเกี่ยวกับ SQL ที่ไม่ดี ฉันจะเก็บมันไว้ในกระเป๋าหลังของฉันอย่างแน่นอน!
Kris Gruttemeyer

3
อีกหนึ่งที่ดี (ยังมีประโยชน์สำหรับการจัดรูปแบบรหัสสำหรับบล็อก) เป็นที่เรียบง่าย-Talk ของ SQL Prettifier
Aaron Bertrand

ดังนั้นแม้ว่าเอกสารของ Microsoft จะบอกว่ามันสามารถฟอร์แมตได้ แต่ SSMS ก็ทำไม่ได้?

SQL ที่แย่ยังมีปลั๊กอินสำหรับ Notepad ++ ไม่แน่ใจว่าทำไมคุณไม่ใช้ปลั๊กอิน SSMS มันใช้งานได้ดีในตอนนี้ในที่สุดพวกเขาก็ใช้งานกับ SSMS 2012+
Jonathan Fite

6

ติดตั้งส่วนเสริมที่ทำเช่นนี้ ฉันใช้ SQL ฉบับสมบูรณ์ฟรี: http://www.devart.com/dbforge/sql/sqlcomplete/ซึ่งมีฟังก์ชันการจัดรูปแบบ SQL พื้นฐานบางอย่าง มันทำงานร่วมกับ SSMS และใช้ Ctrl + K, D


รุ่นออนไลน์ฟรีsql-format.com
Iman Abidi

2

SqlSmashเป็นเครื่องมือเชิงพาณิชย์ที่ให้คุณฟอร์แมต SQL ของคุณ (และอีกมากมาย) ใน SSMS 2012 และ 2014 แป้นพิมพ์ลัดเริ่มต้นคือ (Ctrl + K, Ctrl + D)
ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้พัฒนาที่อยู่เบื้องหลัง


โปรดเพิ่มว่าเครื่องมือนี้ไม่ฟรี
ypercubeᵀᴹ

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