Saya memiliki beberapa SQL standar yang saya jalankan terhadap banyak basis data pada satu server untuk membantu saya mendiagnosis masalah:
select
so.name,
so.type,
MAX(case when sc.text like '%remote%' then '' ELSE 'N' END) AS Relevant,
@@ServerName as Server,
DB_Name() as DBName
from
sysobjects so with (nolock)
join syscomments sc with (nolock) on so.id = sc.id
where (sc.text like '%emote%')
group by so.name, so.type
order by so.type, so.name
Bagaimana saya bisa menjalankan ini terhadap semua basis data pada satu server? (selain menghubungkan secara manual ke satu per satu dan menjalankan)
sql-server
Andrew Bickerton
sumber
sumber
Jawaban:
sp_MSForEachDB
Salah satu opsi adalah sp_MSForEachDB . Ini tidak berdokumen tetapi tetap bermanfaat
Pencarian jalinan memiliki banyak contoh juga
Catatan: Menjadi fungsi yang tidak didukung (yang memiliki beberapa bug yang dikenal) Anda mungkin ingin menulis versi Anda sendiri (terima kasih @Pradeep)
Contoh SQL di atas perlu direstrukturisasi sebagai:
CATATAN:
sumber
, ''?'' AS DBName
ke pernyataan pilih apa saja. Seperti contoh sayaHanya $ 0,05 saya: SQL Multi Script (pelaksanaan banyak skrip terhadap beberapa SQL Server).
sumber
SSMS Tools Pack melakukan ini dengan baik dan gratis untuk server basis data sebelum 2012. Fitur: "Jalankan pada Banyak Target" - http://www.ssmstoolspack.com/Features?f=6
sumber
Ada metode lebih lanjut yang akan memberikan output dalam satu set hasil semi-gabungan. Pertama buka Server Terdaftar dan buat grup baru di bawah Grup Server Lokal kemudian daftarkan server Anda satu kali untuk setiap DB, dalam setiap kasus mengatur DB default ke yang diinginkan.
Setelah selesai klik kanan pada grup Anda dan pilih Permintaan Baru. Jendela permintaan yang terbuka akan memiliki "banyak" di mana Anda biasanya akan melihat nama server pada bilah status. Setiap kueri yang dijalankan di jendela ini akan beroperasi pada setiap server terdaftar yang ada di grup. Kolom pertama hasil akan menjadi nama server terdaftar. Set hasil akan terfragmentasi oleh kolom pertama itu dan pesanan berdasarkan kehendak hanya beroperasi di dalam fragmen itu.
Sepotong fungsionalitas yang sangat kuat tetapi terabaikan ketika Anda secara rutin harus menjalankan SQL yang sama di beberapa server.
sumber
Perusahaan saya telah mengembangkan alat yang disebut Pelaksana Script xSQL . Ini gratis untuk penggunaan pribadi, dan bagi saya, itu membuat penempatan skrip pada banyak target menjadi sangat mudah.
sumber
Saya mengembangkan alat ini: https://github.com/andreujuanc/TakoDeploy
Saya masih menulis beberapa baris di atasnya, tetapi cukup stabil sekarang. Saya telah menggunakannya melawan database produksi dan bekerja seperti pesona.
sumber