Memformat SQL di SQL Server Management Studio

250

Di Visual Studio & IDE lain, Anda dapat dengan mudah memformat kode Anda dengan pintasan keyboard, melalui menu, atau secara otomatis saat Anda mengetik.

Saya bertanya-tanya apakah belum ada cara untuk mengaktifkan fitur standar ini di SQL Server Management Studio?

Saya bekerja dengan beberapa procs besar yang tersimpan yang merupakan kekacauan berantakan dari format SQL yang buruk dan akan lebih baik jika saya bisa pergi "Pilih Semua -> Format SQL"

lomaxx
sumber
1
SQLinForm menyediakan fitur Hotkey
Guido
1
sekarang memiliki formatter online gratis: sqlinform.com/sql_formatter_online.html
Guido
Online, Anda dapat menggunakan devtoolsonline20190908040816.azurewebsites.net/DevTools/…
GomuGomuNoRocket
Diperbarui Q untuk menjadi pada topik
Andrew

Jawaban:

270

Jawaban terlambat, tetapi semoga bermanfaat: T-SQL Formatter Orang Miskin adalah formatter T-SQL open-source dengan dukungan kumpulan / skrip T-SQL lengkap (sembarang DDL, sembarang DML), Plugin SSMS, command-line bulk formatter, dan opsi lainnya.

Ini tersedia untuk penggunaan langsung / online di http://poorsql.com , dan hari ini baru saja lulus ke "versi 1.0" (versi beta selama beberapa bulan), setelah baru saja memperoleh dukungan untuk MERGEpernyataan, OUTPUTklausa, dan hal-hal lain yang rewel. .

Add-in SSMS memungkinkan Anda untuk mengatur hotkey Anda sendiri (standarnya adalah Ctrl- K, Ctrl- F, untuk mencocokkan Visual Studio), dan memformat seluruh skrip atau hanya kode yang telah Anda pilih / sorot, jika ada. Pemformatan output dapat disesuaikan.

Dalam SSMS 2008 menggabungkan dengan baik dengan built-in intelli-sense, secara efektif menyediakan fungsi basis yang kurang lebih sama dengan SQL Prompt Red Gate (SQL Prompt, tentu saja, memiliki hal-hal tambahan, seperti cuplikan, skrip objek cepat, dll).

Umpan balik / permintaan fitur lebih dari diterima, tolong berikan pusaran jika Anda mendapatkan kesempatan!

Pengungkapan: Ini mungkin sudah jelas tetapi saya menulis perpustakaan / alat / situs ini, jadi jawaban ini juga promosi diri yang tidak tahu malu :)

Tao
sumber
2
Pada SQL server 2012 Ctrl + K default, Ctrl + F pintas tidak berfungsi karena dikatakan sudah terikat ke Format Pilihan . Ini berhasil setelah mengubahnya dari DataWarehouse Designer::Ctrl+k, Ctrl+fmenjadi Global::Ctrl+k, Ctrl+j.
Marco Lackovic
5
lihat petunjuk untuk instalasi SSMS 2014 stackoverflow.com/questions/23303026/…
Alexander Sigachov
2
Alat hebat tetapi tidak kompatibel dengan RTM 2016
dmeglio
1
@ dman2306 - installer yang kompatibel dengan 2016 (dan 17) sekarang tersedia.
Tao
2
@Jordan: di Windows 10 .Net Framework 3.5 SP1 (termasuk .Net 2.0) adalah fitur opsional windows, yang dapat diaktifkan di layar / fungsionalitas "Aktifkan atau nonaktifkan fitur" Windows. Ini disebut ".NET Framework 3.5 (termasuk .NET 2.0 dan 3.0)", dan itu tepat di bagian atas daftar fitur opsional - apakah ini tidak bekerja untuk Anda? (ya, maaf, membutuhkan .Net 2.0 di hari & usia ini mungkin tidak masuk akal ... Masalah Terbuat github.com/TaoK/PoorMansTSqlFormatter/issues/199 untuk dilacak)
Tao
137

Ada trik khusus yang saya temukan secara tidak sengaja.

  1. Pilih kueri yang ingin Anda format.
  2. Ctrl+ Shift+ Q(Ini akan membuka permintaan Anda di desainer permintaan)
  3. Maka pergilah OK Voila! Desainer kueri akan memformat kueri Anda untuk Anda. Peringatan adalah bahwa Anda hanya dapat melakukan ini untuk pernyataan dan bukan kode prosedural, tetapi lebih baik daripada tidak sama sekali.
Justin
sumber
9
Tip yang bagus. Sayangnya, sementara metode ini berhasil, ia melakukan pekerjaan yang cukup buruk. Tapi setidaknya ada sesuatu yang builtin.
John Homer
itu diformat tetapi bukan cara yang diharapkan. Pokoknya sesuatu lebih baik daripada tidak sama sekali :) :) Terima kasih atas tipnya.
Jaini Naveen
2
Yah, sejauh yang saya tahu, meskipun itu tidak benar-benar melakukan pekerjaan terbaik, ia melakukan sesuatu, dan itu out-of-the-box, dan Anda tidak perlu membayar untuk itu. Tetapi hanya satu orang yang berpikir untuk mencentangnya sebagai Berguna. Saya benar-benar kagum, saya pikir saya punya ini dipatok ;-)
Justin
1
Saya menemukan bahwa, juga, kueri diformat ketika disisipkan ke tampilan baru. Tapi, ini jauh lebih bersih ... +1.
Feckmore
16
ini hanya akan berfungsi jika konten kueri dapat mewakili grafik.
kbvishnu