Каков идеальный способ проверить, существует ли база данных на SQL Server с использованием TSQL? Кажется, несколько подходов к реализации этого.
Как проверить, существует ли база данных в SQL Server?
Ответ 1
Из Microsoft script:
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'
Ответ 2
На самом деле это лучше всего использовать:
IF DB_ID('dms') IS NOT NULL
--code mine :)
print 'db exists'
См. Https://docs.microsoft.com/en-us/sql/t-sql/functions/db-id-transact-sql
Ответ 3
IF EXISTS (SELECT name FROM master.sys.databases WHERE name = N'YourDatabaseName')
Do your thing...
Кстати, это произошло непосредственно из SQL Server Studio, поэтому, если у вас есть доступ к этому инструменту, я рекомендую вам начать играть с различными доступными функциями "Script xxxx AS". Сделайте вашу жизнь проще!:)
Ответ 4
Мне нравится @Eduardo ответ, и мне понравился принятый ответ. Мне нравится возвращать логическое значение из чего-то подобного, поэтому я написал его для вас, ребята.
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
Теперь вы можете использовать его следующим образом:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
Ответ 5
ПОПРОБУЙ ЭТО
IF EXISTS
(
SELECT name FROM master.dbo.sysdatabases
WHERE name = N'New_Database'
)
BEGIN
SELECT 'Database Name already Exist' AS Message
END
ELSE
BEGIN
CREATE DATABASE [New_Database]
SELECT 'New Database is Created'
END
Ответ 6
Другой способ - использовать SqlDataReader
вместе с SqlConnection
и SqlCommand
. Используйте свойство HasRows
. Это true
если база данных существует, и false
если это не так.
Пример (в этом примере имя базы данных "Соответствует"):
public static bool DatabaseExists()
{
bool Count;
string DatabaseCheckString = "select name from master.sys.databases where name='Matches'";
SqlConnection MyConn = new SqlConnection(CreateDatabaseConnectionString);
SqlCommand DatabaseExistsCommand = new SqlCommand(DatabaseCheckString, MyConn);
MyConn.Open();
SqlDataReader Reader = DatabaseExistsCommand.ExecuteReader();
Count = Reader.HasRows;
MyConn.Close();
return Count;
}