Saya harus tidak setuju dengan Aaron (dan jawaban yang diterima).
Pendekatan Aaron adalah cara saya suka berurusan dengan "hal-hal DBA" misalnya skrip pemeliharaan. Saya tidak akan pernah mau melakukan ini dengan fungsi perpustakaan yang akan dipanggil oleh basis data pengguna.
Mengapa? Anda akan menuju ke database yang setara dengan DLL Hell .
Versi yang tidak kompatibel
... Sebelum Windows 2000, Windows rentan terhadap ini karena tabel kelas COM dibagikan di semua pengguna dan proses. Hanya satu objek COM, dalam satu DLL / EXE dapat dinyatakan memiliki ID Kelas COM global tertentu pada suatu sistem. Jika ada program yang diperlukan untuk membuat turunan dari kelas itu, ia mendapatkan apa pun yang merupakan implementasi terdaftar terpusat saat ini. Akibatnya, penginstalan program yang menginstal versi baru dari objek umum dapat secara tidak sengaja merusak program lain yang sebelumnya diinstal.
Instal .net 4.5 di server yang menjalankan aplikasi .net 2.0 dan apa yang terjadi? Tidak ada, aplikasi Anda terus menggunakan kerangka kerja 2.0. Perbarui fungsi LastIndexOf Anda di server yang menampung 3 aplikasi database (sebagai bagian dari peningkatan ke salah satunya) dan apa yang terjadi? Ketiganya kini menggunakan versi terbaru.
Alternatifnya adalah pendekatan yang diadopsi oleh SQL # . Ini diinstal ke skema di setiap basis data pengguna, sehingga Anda dapat dengan aman memutakhirkan basis data untuk Aplikasi-X tanpa risiko stabilitas Aplikasi-Y.
Jika Anda bekerja di lingkungan manajemen perubahan yang dikontrol ketat, Anda tidak punya pilihan, Anda tidak dapat memutakhirkan komponen bersama tanpa menguji semua konsumen komponen. Jika Anda bekerja di tempat yang sedikit lebih "cepat dan longgar", Anda bebas untuk mengambil risiko dengan memecahkan sesuatu tanpa sengaja dengan tambalan / peningkatan.