Memformat T-SQL di SSMS 2012

39

Menurut dokumen Microsoft ini:

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

Saya seharusnya dapat menggunakan ctrl + K lalu ctrl + D untuk memformat dokumen SQL saya di SQL Server Management Studio 2012 tetapi ketika saya menggunakan kombo itu saya mendapatkan kesalahan:

Kombinasi tombol (Ctrl + K, Ctrl + D) terikat ke perintah (Format Dokumen) yang saat ini tidak tersedia.

Saya mencoba membuat modifikasi pada dokumen SQL yang sudah ada yang tidak memiliki format sama sekali yang membuatnya sangat sulit untuk dibaca. Adakah yang tahu bagaimana membuat perintah Format Dokumen tersedia sehingga saya dapat meminta SQL memformat kode ini untuk saya?

Aaron Bertrand
sumber
Saya pikir pernyataan itu Available only in the text editoradalah cara penulis teknologi untuk mengatakan "bukan editor permintaan" tanpa secara eksplisit menyebut negatif
billinkc
1
@ Billinkc Saya tidak berpikir itu benar. Editor teks adalah "editor permintaan" yang digunakan untuk Transact-SQL dan XML , itu sebenarnya bukan editor permintaan ketika berurusan dengan XML. Saya pikir dokumentasinya agak terlalu menjanjikan, dan saya berkomentar seperti itu pada item Connect .
Aaron Bertrand

Jawaban:

42

Kombinasi keyboard yang Anda cari ( Ctrl+ K, Ctrl+ D) adalah untuk "memformat" - tetapi tidak sejauh yang Anda harapkan. Ini bukan prettifier, itu hanya digunakan untuk menyisipkan spasi dan tab yang benar seperti yang ditemukan di Tools > Options > Text Editor > Transact-SQL > General/Tabs- jadi jika Anda menyorot sebagian teks dan menekan kombinasi keyboard, itu seharusnya mengkonversi tab menjadi 4 spasi (jika Anda memilih memasukkan spasi), terapkan jenis indentasi yang telah Anda tentukan, dll.

Opsi ini TIDAK dimaksudkan untuk membuat kode lebih mudah dibaca - ini bukan fungsionalitas yang saat ini ditawarkan oleh Studio Manajemen secara asli. Meskipun ada beberapa opsi pihak ketiga - beberapa di luar Studio Management, seperti:

Dan ada tambahan juga untuk berbagai tingkat bantuan pemformatan di dalam editor:

Sekarang, alasan Anda mendapatkan pesan ...

Kombinasi tombol (Ctrl + K, Ctrl + D) terikat ke perintah (Format Dokumen) yang saat ini tidak tersedia.

... karena SSMS telah memetakan kombinasi kunci ke konteks yang berbeda. Cara Anda harus dapat "memperbaiki" ini - sekali lagi, itu masih tidak akan melakukan apa yang Anda inginkan, bahkan jika "perbaikan" berhasil - adalah dengan melakukan hal berikut:

  1. Pergi ke Tools > Options > Environment > Keyboard
  2. Tempatkan kursor Anda ke dalam Press shortcut keys:kotak
  3. Tekan Ctrl+ K, Ctrl+D
  4. Ubah Shortcut currently used by:tarik turun dari DataWarehouse DesignermenjadiText Editor

    masukkan deskripsi gambar di sini

  5. tekan OK

Sekarang, ini seharusnya memetakan kombinasi keyboard ke editor teks, tetapi Management Studio mengembalikannya setelah menekan OK (Anda akan terus mendapatkan pesan kesalahan. Jadi, saya pikir masalahnya adalah dokumentasi percaya bahwa fungsi ini ada, tetapi Management Studio lebih tahu dan tidak menawarkannya (dan Microsoft kemungkinan akan menulis ini sebagai bug dalam dokumentasi, dan memperbaikinya, daripada kekurangan dalam alat). Mungkin ada harapan di masa depan tetapi, untuk saat ini, ini adalah masalah yang diketahui dan sebagian besar diabaikan . Anda akan mencatat bahwa Formattingtab yang mengacu pada dokumentasi sama sekali tidak ada (meskipun ada untuk XML, di mana kombinasi keyboard berfungsi). Dokumentasi mungkin harus menyatakan:

Menerapkan indentasi dan pemformatan spasi untuk bahasa yang ditentukan pada panel Memformat bahasa di bagian Editor Teks dari dialog Opsi . Hanya tersedia di editor teks dan hanya untuk bahasa tertentu .

Cara lain untuk mendapatkan ide tentang jenis opsi pemformatan apa yang ditawarkan SSMS secara asli adalah pergi ke Tools > Customize > Commands > Edit > Add Command... > Formatdan melihat daftar perintah yang mungkin ada. Tidak ada yang menunjukkan ada pengetahuan tentang bahasa yang sebenarnya, sehingga tidak akan tahu di mana harus memasukkan jeda baris atau menambahkan indentasi tambahan atau membantu dengan tanda kurung dll.

masukkan deskripsi gambar di sini

Jika Anda ingin pemformatan khusus bahasa untuk membuat kode T-SQL yang ada lebih mudah dibaca, Anda tidak akan mendapatkan banyak dari SSMS, dan Anda harus mencari opsi lain.

Aaron Bertrand
sumber
1
Saya mengalami gejala dan perilaku yang sama yang dijelaskan oleh OP serta Aaron di SSMS 2016; Namun, saya bisa membuatnya berfungsi dengan baik. Kuncinya adalah menghapus semua perintah yang terikat Ctrl+K, Ctrl+Dterlebih dahulu menggunakan Removetombol, lalu ikuti program empat langkah Aaron untuk mengikat keyboard, seperti yang didefinisikan di atas ( Tools > Options > Environment > Keyboard). Berikut screenshot dari Optionskotak dialog saya , setelah semuanya diatur: pasteboard.co/GDYkh3h.jpg .
Mass Dot Net
Saya sama sekali tidak yakin mengapa komentar ini tidak terdaftar sebagai jawaban karena itu berfungsi untuk saya dengan melakukan apa yang Anda katakan.
Kristopher
12

Saya tidak percaya ini mungkin di SSMS. Ada item Connect yang dibuka untuk fitur ini.

Apa yang saya pribadi suka gunakan untuk kode SQL yang diformat dengan buruk adalah aplikasi web pada SQL yang Buruk . Itu pekerjaan yang sangat bagus memformat kode SQL dengan spesifikasi Anda. Bahkan menghasilkan HTML jika Anda inginkan. Saya tidak menggunakan plug-in SSMS atau kiriman lain yang mereka iklankan, saya selalu naik ke situs untuk melakukan pemformatan cepat dan kemudian menyalin / menempelkan langsung ke SSMS.

Thomas Stringer
sumber
Terima kasih atas tipnya pada Poor SQL. Akan menyimpan yang terselip di saku belakang saya pasti!
Kris Gruttemeyer
3
Satu lagi yang bagus (juga berguna untuk memformat kode untuk blog) adalah Prettifier SQL Simple-Talk .
Aaron Bertrand
Jadi meskipun dokumen Microsoft mengatakan bisa memformat, SSMS tidak bisa?
SQL yang buruk juga memiliki plug in untuk Notepad ++. Tidak yakin mengapa Anda tidak akan menggunakan plug-in SSMS. Ini berfungsi hebat sekarang sehingga mereka akhirnya membuatnya berfungsi dengan SSMS 2012+.
Jonathan Fite
2

SqlSmash adalah alat komersial yang memungkinkan Anda memformat SQL Anda (dan banyak lagi) di SSMS 2012 dan 2014. Pintasan keyboard default adalah (Ctrl + K, Ctrl + D).
Penafian: Saya adalah pengembang di belakangnya.

Agak terlambat
sumber
Harap tambahkan bahwa alat ini tidak gratis.
ypercubeᵀᴹ
Ada versi komunitas gratis.
Jason Geiger