¿Cuál es la forma ideal de verificar si existe una base de datos en un servidor SQL utilizando TSQL? Parece que existen múltiples enfoques para implementar esto.¿Cómo comprobar si existe una base de datos en SQL Server?
Respuesta
Desde el guión de un 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...
Por cierto, esto vino directamente desde el servidor Studio SQL, así que si usted tiene acceso a esta herramienta, te recomiendo empezar a jugar con los diferentes "script xxxx AS "funciones que están disponibles. Hará tu vida más fácil! :)
Si 'USE [Master]' es inconveniente, puede abordar directamente la vista desde cualquier base de datos como 'master.sys.databases' – ProfK
En realidad, es mejor utilizar:
if db_id('dms') is not null
--code mine :)
print 'db exists'
Ver https://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
Bueno, es ciertamente más corto y más críptico. Por curiosidad, ¿por qué es mejor? –
Probablemente porque db_id es más seguro que buscar un nombre de base de datos en una ubicación específica en '[maestro]' – Anthony
Bueno, sí, además de que es casi imposible que db_id() sea peor (podría ser la misma complejidad/costo) que la respuesta aceptada ya que db_id consulta por un número. Así que prefiero apostar a que db_id() se implemente de una forma más inteligente, ya que fue realizado por los desarrolladores de la base de datos. – Eduardo
me gusta @ respuesta de Eduardo y me gustó la respuesta aceptada. Me gustaría obtener un booleano de algo así, así que lo escribí para ustedes.
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
Ahora se puede utilizar de esta manera:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
- 1. ¿Cómo puedo determinar si existe una función de base de datos en SQL Server?
- 2. cómo comprobar si la tabla existe y si no existe Crear una tabla en SQL Server 2008
- 3. Comprobar si existe tabla
- 4. ¿Cómo verifico si existe una columna en SQL Server?
- 5. Compruebe si existe una base de datos antes de crear
- 6. Comprobar si la tabla existe en C#
- 7. ¿Cómo comprobar el rendimiento de una base de datos de SQL Server?
- 8. ¿Cómo puedo verificar si existe una vista en una base de datos?
- 9. ¿Cómo creo una base de datos programáticamente en SQL Server?
- 10. Cómo probar si la base de datos de SQL Server está en modo de usuario único
- 11. Cómo verificar si existe una función en una base de datos SQL
- 12. Comprobar si existe una clave en Memcache
- 13. ¿Cómo comprobar si existe una ventana hija?
- 14. Verifique si existe una ID en una base de datos
- 15. Cómo comprobar si NSUserDefaults existe
- 16. Comprobar si existe una URL en Ruby
- 17. Compruebe si existe una tabla SQL
- 18. ¿Cómo comprobar si existe niño
- 19. SQL Server SI NO EXISTE ¿Uso?
- 20. Crear una base de datos mediante programación en SQL Server
- 21. Comprobar si existe tabla de acceso
- 22. Cakephp comprobar si existe registro
- 23. Comprobar si existe recurso
- 24. SQL Server: cómo comprobar si CLR está habilitado?
- 25. Cómo comprobar si SQL Server Agent se está ejecutando
- 26. Proyecto de base de datos Visual Studio: comprobar si existe el inicio de sesión del servidor SQL
- 27. iPhone: ¿Cómo comprobar si existe una subcadena en una cadena?
- 28. ¿Cómo comprobar si existe una palabra en una frase
- 29. ¿Quitar usuario de la base de datos de SQL Server?
- 30. Múltiples idiomas en una base de datos - SQL Server 2005
que puede ser desde un script de Microsoft pero no es Microsoft práctica recomendada. Fomentan el uso de las vistas INFORMATION_SCHEMA en lugar de acceder directamente a las tablas del sistema. – mwigdahl
no debería "NO EXISTE" simplemente ser "EXISTE" –
¿por qué se fomenta el uso de INFORMATION_SCHEMA en lugar de utilizar directamente referencias a tablas? – eKek0