aşağıdaki deyimi ile başlar uzun saklı yordam vardır: O yoksa, benim yerel sunucuda DB yaratması bekleniyorSQL veritabanı oluşturmak, beklenmedik davranışlar
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
. Sorun şu ki, hemen hemen tüm zamanlar saklı yordamın bu kısmına gidiyor ve onu oluşturmuyor, ki bu da aynı prosedürden diğer kodu engelliyor. Öte yandan, çok nadir durumlarda, DB oluşturur. Sorum şu: DB varlığının kontrol edilmesi daha iyi bir yolu var mı, ben zaten denedim en az 10.
diğer yolları denedim çünkü:
IF NOT EXISTS (SELECT 1 FROM sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
IF NOT EXISTS (SELECT name FROM master.dbo.sys.databases WHERE name = N'DBNAME')
BEGIN
CREATE DATABASE [DBNAME]
END;
Ama benim sp dışında çalıştırırsanız, Mükemmel çalışıyor, bu da bana izinlerle ilgili bir sorun olabileceğini düşündürüyor. çalışmazsa
If(db_id(N'DBNAME') IS NULL)
kullanılarak
zaten 2014 yılında çalışan ve doğru sonucu gösteriyor (isim = N'DBNAME 'sys.databases SELECT *) kullandığınızda. Bir hata mı alıyorsun? – Dhwani
ur proc .. bir parçası olarak herhangi bir geri dönüş kullandınız mı? Evet evet sonra geri alınıyor kontrol edin .. –
Hayır, ben saklı yordamında kullanmaya çalıştığınızda, veritabanı 'DBNAME' yok, yalnızca almak Daha sonra. Bir işlem kullanmıyorum. – StefanL19