Jaki jest idealny sposób sprawdzenia, czy baza danych istnieje na serwerze SQL przy użyciu TSQL? Wydaje się, że istnieje wiele podejść do wdrożenia tego.Jak sprawdzić, czy baza danych istnieje w SQL Server?
Odpowiedz
Od Script Microsoftu:
DECLARE @dbname nvarchar(128)
SET @dbname = N'Senna'
IF (EXISTS (SELECT name
FROM master.dbo.sysdatabases
WHERE ('[' + name + ']' = @dbname
OR name = @dbname)))
-- code mine :)
PRINT 'db exists'
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
Nawiasem mówiąc, ten pochodzi bezpośrednio z SQL Server Studio, więc jeśli masz dostęp do tego narzędzia, polecam uruchomieniu gry z różnymi „Script xxxx AS "funkcje, które są dostępne. Ułatwi Ci życie! :)
Jeśli "USE [Master]" jest niewygodne, możesz bezpośrednio adresować widok widoku z dowolnej bazy danych jako "master.sys.databases" – ProfK
Właściwie to najlepiej użyć:
if db_id('dms') is not null
--code mine :)
print 'db exists'
Zobacz https://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
Cóż, jest to z pewnością krótsze i bardziej zagadkowe. Z ciekawości, dlaczego jest lepiej? –
Prawdopodobnie dlatego, że db_id jest bezpieczniejsze niż sprawdzanie nazwy bazy danych w określonej lokalizacji w '[master]' – Anthony
No cóż, tak, to jest prawie niemożliwe, aby db_id() było gorsze (mogłoby być tej samej złożoności/kosztu) niż zaakceptowana odpowiedź od zapytania db_id dla numeru. Tak więc raczej zakładam, że db_id() jest wdrażany w inteligentniejszy sposób, ponieważ zostało to wykonane przez programistów baz danych. – Eduardo
lubię @ odpowiedź Eduardo i lubiłem przyjętej odpowiedź. Chciałbym odzyskać boolean z czegoś takiego, więc napisałem to dla was.
CREATE FUNCTION dbo.DatabaseExists(@dbname nvarchar(128))
RETURNS bit
AS
BEGIN
declare @result bit = 0
SELECT @result = CAST(
CASE WHEN db_id(@dbname) is not null THEN 1
ELSE 0
END
AS BIT)
return @result
END
GO
Teraz można go używać tak:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
- 1. EF7 - Jak sprawdzić, czy baza danych istnieje?
- 2. Jak sprawdzić, czy istnieje baza danych mysql?
- 3. Jak mogę sprawdzić, czy istnieje ograniczenie SQL Server?
- 4. Android - czy istnieje baza danych SQLite?
- 5. Baza danych SQL Azure używająca SQL Server Management Studio
- 6. Sprawdzanie, czy login SQL Server już istnieje
- 7. Zapytanie, czy baza danych Androida istnieje!
- 8. Serwer SQL: Jak sprawdzić, czy baza danych jest bazą danych systemu?
- 9. JavaDB - Sprawdzanie, czy istnieje baza danych
- 10. Domyślna baza danych programu SQL Server, gdy kwerenda - master
- 11. Powiązana baza danych SQL Server z błędem "niespójne metadane"
- 12. Czy istnieje odpowiednik funkcji SQL Server NewId()?
- 13. Jak określić, czy sekwencja istnieje w SQL Server 2012?
- 14. Jak sprawdzić, czy tabele SQL Server są tabelami systemowymi
- 15. Jak sprawdzić, czy zmienna tabeli jest pusta w SQL Server?
- 16. Baza danych PL/SQL, taka jak Hashmap
- 17. Czy istnieje standardowa praktyka synchronizacji tabel SQL Server?
- 18. Jak sprawdzić, czy określony rekord istnieje w tabeli w SQL Server?
- 19. Sprawdzanie, czy baza danych przy przywracaniu stanu
- 20. Jak sprawdzić, czy tabela lub kolumna istnieje w bazie danych?
- 21. Jak zmienić właściciela bazy danych SQL Server?
- 22. SQL Server XML istnieje()
- 23. Baza danych obiektów Eloquera
- 24. Upuść bazę danych SQL Server
- 25. SQL Server główny „dbo” nie istnieje,
- 26. T-SQL, aby sprawdzić, czy baza danych jest subskrybowana przez subskrybenta w replikacji transakcyjnej
- 27. Czy baza danych zapytań w pamięci podręcznej zapytań sql Railsów?
- 28. Role bazy danych SQL Server
- 29. Czy istnieje baza danych SQL, która może wycofać się w czasie?
- 30. Jak sprawdzić, czy rekord istnieje?
, które mogą być ze skryptu Microsoft, ale nie jest to Microsoft zaleca praktykę. Zachęcają do używania widoków INFORMATION_SCHEMA zamiast bezpośredniego dostępu do tabel systemowych. – mwigdahl
nie powinien "NIE ZNALEŹĆ" po prostu "EXISTS" –
dlaczego zachęca się do używania INFORMATION_SCHEMA zamiast bezpośrednio odwoływać się do tabel? – eKek0