Quel est le moyen idéal de vérifier si une base de données existe sur un serveur SQL à l'aide de TSQL? Il semble que plusieurs approches soient mises en œuvre pour cela.Comment vérifier si une base de données existe dans SQL Server?
Répondre
D'un script de Microsoft:
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...
D'ailleurs, ce sont venus directement à partir de Studio SQL Server, donc si vous avez accès à cet outil, je vous recommande de commencer à jouer avec les différents « Script xxxx AS "fonctions disponibles. Cela vous facilitera la vie! :)
Si 'USE [Master]' n'est pas pratique, vous pouvez directement accéder à la vue depuis n'importe quelle base de données en tant que 'master.sys.databases' – ProfK
En fait, il est préférable d'utiliser:
if db_id('dms') is not null
--code mine :)
print 'db exists'
Voir https://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
Eh bien, c'est certainement plus court et plus cryptique. Par curiosité, pourquoi est-ce mieux? –
Probablement parce que db_id est plus sûr que de vérifier un nom de base de données dans un emplacement spécifique dans '[master]' – Anthony
Eh bien, oui, et il est quasiment impossible que db_id() soit pire (pourrait être la même complexité/coût) la réponse acceptée depuis les requêtes db_id pour un nombre. Je préfère par conséquent que db_id() soit implémenté de manière plus intelligente, car cela a été fait par les développeurs de bases de données. – Eduardo
J'aime @ la réponse d'Eduardo et j'ai aimé la réponse acceptée. J'aime récupérer un booléen de quelque chose comme ça, alors je l'ai écrit pour vous les gars.
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
Maintenant, vous pouvez l'utiliser comme ceci:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
- 1. Comment vérifier si quelque chose existe dans une base de données SQL?
- 2. Comment puis-je déterminer si un rôle de base de données existe dans SQL Server?
- 3. Comment vérifier si une procédure stockée existe dans SQL Azure?
- 4. Comment vérifier si une règle existe dans une base de données de clauses de fichier prologue
- 5. Comment vérifier si une table temporaire existe dans la base de données
- 6. Vérifie si un ID existe dans une base de données
- 7. Comment vérifier si deux bases de données SQL Server contiennent des données égales?
- 8. Comment vérifier une base de données SQL Server CE pour les index?
- 9. Schémas de base de données SQL Server
- 10. Vérifier si un élément existe
- 11. Comment vérifier si ma base de données mysql ralentit
- 12. Ouvrir Connexion à la base de données, Comment vérifier si elle existe toujours?
- 13. Comment vérifier si une variable existe dans un modèle FreeMarker?
- 14. ADO.Net Excel, Vérifier si une table existe?
- 15. Hibernation: vérifier si l'objet existe
- 16. Comment migrer les diagrammes de base de données SQL Server vers une autre base de données?
- 17. MS SQL Server 2000 - vérifier l'erreur de base de données existante
- 18. Vérifier si l'élément XML existe
- 19. Séparation d'une base de données SQL Server
- 20. Comment vérifier si une colonne de texte SQL Server est vide?
- 21. Rechercher un objet dans SQL Server (base de données croisée)
- 22. Vérifier si l'URI relative existe
- 23. Déterminez si la table existe dans SQL Server CE?
- 24. Base de données SQL Server - Champs masqués?
- 25. SharePoint: Vérifier si l'élément existe dans une liste, surcharge minimale
- 26. SQL pour vérifier si la base de données est vide (pas de tables)
- 27. Importation de la base de données Sql Server 2005 dans Sql Server express 2008
- 28. MS SQL Server: vérifier si un utilisateur peut exécuter une procédure stockée
- 29. Comment puis-je migrer la base de données de SQL Server 2008 vers SQL Server 2000
- 30. Si l'enregistrement existe dans la base de données, METTRE À JOUR une seule colonne
Ce peut être d'un script Microsoft mais pas la pratique recommandée par Microsoft. Ils encouragent l'utilisation des vues INFORMATION_SCHEMA plutôt que d'accéder directement aux tables système. – mwigdahl
ne devrait pas "PAS EXISTE" juste être "EXISTE" –
pourquoi est encourageant utilisant INFORMATION_SCHEMA au lieu d'utiliser directement des références aux tables? – eKek0