SQL Serverda Stored Procedure, fonksiyon gibi objeler veritabanı seviyesinde olup sadece oluşturulduğu veritabanında kullanılabilirler. Eğer farklı bir veritabanına bağlı iken başka bir veritabanındaki objeye erişmek istersek ilgili objenin adının başına veritabanı adını da eklememiz gerekiyor. Aksi takdirde "Invalid object name '%.*ls'" hatasını alırız. Fakat özellikle SQL Serverın built-in sistem stored procedure ve fonksiyonlarını çalıştırırken veritabanı adı vermeksizin herhangi bir veritabnından ilgili objeye erişebiliyoruz.
İhtiyaç duyulduğu takdirde bir stored procedure bir kere oluşturulup veritabanı adı vermeden herhangi veritabanından çağrılabilir. Bunun için oluşturacağımız stored procedure'u master veritabanında ve "sp_" önekini kullanarak oluşturmamız yeterli olacaktır.
Şimdi bunu basit bir örnek üzerinde görelim. Örneğimizde öncelikle bir stored procedure yazıp ilgili stored procedure içinde şuanki aktif çalışma veritabanımızın adını ekran yazdıralım.
3 | create proc sp_getdbname |
Yukarıdaki gibi master veritabanında “sp_” ön eki ile oluşturduğumuz stored procedure bir kaç veritabanında doğrudan çalıştıralım.
Yukarıdaki sorgularımız çıktısına baktığımızda stored procedure’un sadece master veritabanında oluşturulmasına rağmen farklı veritabanlarından da veritabanı adı belirtilmeden erişilebilmektedir. Bu şekilde bir stored procedure’un tüm var olan veriatablanlarından erişilmesini istiyorsak bunu “sp_” ön eki ile master veritabanında oluşturmamız yeterli olacaktır.
Bu şekilde kullanımda dikkat etmemiz gereken nokta ise veritabanımızı başka bir SQL Server’a restore ettiğimizde master veritabanını da restore etmediğimiz sürece artık bu şekilde oluşturduğumuz stored procedure’lere erişmeyeceğiz.
Hiç yorum yok:
Yorum Gönder