Я создал переменную, содержащую логическое имя базы данных, и удалил ее, если она присутствует в моем LocalDB
.
Проблема, с которой я сталкиваюсь в моем текущем коде, состоит в том, что он ищет только в физических именах существующих баз данных.
(У меня есть база данных с логическим названием «Разработка», которая не удаляется).
DECLARE @dbname nvarchar(128)
SET @dbname = 'Development'
IF(EXISTS(SELECT NULL FROM sys.databases
WHERE ('[' + name + ']' = @dbname OR name = @dbname )))
BEGIN
DECLARE @sql VARCHAR(MAX)
SELECT @sql = COALESCE(@sql,'') + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(@dbname) AND SPId <> @@SPId
EXEC(@sql)
EXEC('DROP DATABASE ' + @dbname);
PRINT 'Existing database removed'
END
ELSE
BEGIN
PRINT 'Database not present';
END
В результате я получаю распечатку «База данных отсутствует», а база данных не удалена.
То, что я хотел бы, это удаленная база данных (.mdf
и .ldf
)