Latar Belakang: Beberapa batasan kolom default kami dibuat tanpa nama eksplisit, jadi kami mendapatkan nama yang menyenangkan yang berbeda dari satu server ke server lainnya seperti: DF__User__TimeZoneIn__5C4D869D
Saya lebih suka mengatur semuanya agar dapat dikelola dengan penamaan yang konsisten DF_Users_TimeZoneInfo
sehingga kami dapat memastikan bahwa ada kendala yang sesuai pada tabel target di masa mendatang (seperti dalam perbandingan RedGate, atau bahkan hanya secara visual)
Saya punya skrip yang sebagian besar berfungsi untuk apa yang saya inginkan:
select 'sp_rename N''[' + s.name + '].[' + d.name + ']'',
N''[DF_' + t.name + '_' + c.name + ']'', ''OBJECT'';'
from sys.tables t
join
sys.default_constraints d
on d.parent_object_id = t.object_id
join
sys.columns c
on c.object_id = t.object_id
and c.column_id = d.parent_column_id
join sys.schemas s
on t.schema_id = s.schema_id
WHERE d.NAME like 'DF[_][_]%'
Tapi ini hanya memberi saya hasil, dan bukan sesuatu yang saya benar-benar dapat lulus menjadi eksekutif atau apa pun.
Bagaimana saya bisa membuat ini sehingga saya bisa menjalankan sp_rename
skrip - skrip itu tanpa harus menyalin semua elemen yang dikembalikan dan menempelkannya ke jendela permintaan baru dan menjalankannya lagi? Mencoba menyimpan sebanyak mungkin penekanan tombol sehingga saya dapat memperbaikinya di banyak lingkungan.
sumber
Jawaban:
Ok, beberapa hal.
EXEC
saat menjalankan prosedur tersimpan; steno tanpaEXEC
hanya berfungsi ketika itu adalah pernyataan pertama dalam bets (dan itu tidak akan terjadi di sini).QUOTENAME()
alih-alih menerapkan tanda kurung siku sendiri secara manual. Dalam hal ini Anda mungkin aman, tetapi ada kasus di mana pendekatan manual akan rusak.Anda dapat menguji
PRINT
output tetapi tidak harus lengkap jika total perintah Anda> 8k (lihat tip ini untuk beberapa pendekatan alternatif ).sumber
sp_help; sp_help;
.Berdasarkan pertanyaan Anda .. yang telah Anda hapus "otomatiskan skrip yang sama pada beberapa database pada instance "
Di bawah ini adalah kode yang akan membantu Anda
sumber