SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

Di SQL Server Management Studio apa itu mode SQLCMD?

Saya melakukan penelitian lebih lanjut, jadi inilah pemahaman saya tentang ini untuk memperluas apa yang telah ditulis sejauh ini:

Apa itu SQLCMD

SQLCMD.exe adalah utilitas konsol yang disertakan dalam penginstalan SQL Server 2005 dan yang lebih tinggi. Anda biasanya dapat menemukannya di jalur seperti c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE .

Ini adalah lingkungan scripting sederhana yang memungkinkan otomatisasi tugas yang berhubungan dengan SQL server. Misalnya, Anda dapat menulis dan menjalankan skrip yang akan masuk ke instance SQL Server tertentu, menjalankan skrip dari direktori tertentu pada koneksi ini, dan menyimpan hasilnya dalam file tertentu.

Invoke-Sqlcmd cmdlet diperkenalkan dengan SQL Server 2008 sebagai sarana untuk menggantikan alat ini dengan pendekatan standar berbasis Powershell, mempertahankan sebagian besar sintaks dan fungsionalitas asli.

Apa itu mode SQLCMD di SSMS

Dalam SSMS, mode SQLCMD adalah mode eksekusi skrip yang mensimulasikan lingkungan sqlcmd.exe dan oleh karena itu menerima beberapa perintah yang bukan merupakan bagian dari bahasa T-SQL. Tidak seperti sqlcmd.exe , ia menghubungi database menggunakan SqlClient (sama seperti SSMS), bukan ODBC penyedia data, jadi dalam beberapa aspek mungkin memiliki perilaku yang berbeda dari sqlcmd.exe .

Menjalankan skrip dalam mode SQLCMD memungkinkan untuk menggunakan perintah khas sqlcmd.exe lingkungan. Namun, tidak ada IntelliSense atau dukungan debug untuk mode SQLCMD, jadi mempertahankan skrip yang menggabungkan T-SQL bersih dengan kode khusus SQLCMD bisa merepotkan. Oleh karena itu, sebaiknya digunakan hanya jika diperlukan.

Contoh kasus penggunaan

Misalkan sebuah perusahaan memiliki konvensi penamaan untuk database yang menyertakan lingkungan dalam namanya, misalnya:MyDb_Prod , MyDb_Uji , MyDb_Pengembangan . Konvensi ini dapat digunakan untuk meminimalkan kemungkinan kesalahan .

Saat pengembang menulis skrip T-SQL, skrip tersebut harus dieksekusi di lingkungan yang berbeda dalam proses penerapan/pengujian, yang akan memerlukan banyak versi kode:

 SELECT *
 FROM [MyDb_Dev].[dbo].[MyTable1] -- MyDb_Dev -> MyDb_Test -> MyDb_Prod

Sebagai gantinya, kita dapat mengasumsikan bahwa nama database akan diberikan sebagai variabel SQLCMD dalam proses penerapan dan memiliki file yang sama persis digunakan untuk semua lingkungan:

 -- :setvar databaseName "MyDb_Dev" -- uncomment for testing in SSMS

 SELECT *
 FROM [$(databaseName)].[dbo].[MyTable1]

(dalam contoh sederhana ini nama basis data dapat dihilangkan sama sekali, tetapi jika Anda memiliki gabungan lintas basis data, menggunakan nama basis data diperlukan)



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Di SSMS, bagaimana cara mengubah nama tab jendela kueri SQL?

  2. Nama Objek Tidak Valid - Prosedur Tersimpan

  3. xp_regread() mengembalikan kesalahan 5, 'Akses ditolak.'

  4. Temukan prosedur tersimpan berdasarkan nama

  5. SQL Server Management Studio 2012 hang