-
Всем, Добрый день!
Никак не могу понять почему следующий код отрабатывает в QueryAnalizer, а при выполнении через osql.exe выдает ошибку.
Database 'Silver' already exists. (почему-то не может удалить БД)
USE Master GO IF DB_ID('Silver') <> NULL drop database Silver GO CREATE DATABASE Silver ON (NAME = Silver_dat, FILENAME = 'd:\Silverdat.mdf', SIZE = 25, MAXSIZE = 100, FILEGROWTH = 5 ) LOG ON ( NAME = 'Silver_log', FILENAME = 'd:\Silverlog.ldf', SIZE = 5, MAXSIZE = 25, FILEGROWTH = 5 ) GO
-
Ты уверен, что именно не хочет удалять? Сократи код до удаления и скажи результат.
-
Сократил. Отработало без ошибок, НО база НЕ удалилась (((. Пользователь, под которым выполняется код - sa, и в osql и в Аналайзере конект под sa.
-
Собственно удалить можно так: USE Master GO drop database Silver GO
LOG: 1> 2> 1> 2> 3> 4> 5> Msg 3738, Level 0, State 1, Server RIMDUSBASE, Line 3 Deleting database file 'd:\Silverlog.ldf'. Msg 3738, Level 0, State 1, Server RIMDUSBASE, Line 3 Deleting database file 'd:\Silverdat.mdf'. 1>
Получается что вызов DB_ID('Silver') равен NULL при существующей базе. Как-то это не верно (
-
> IF DB_ID('Silver') <> NULL
-
USE Master
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'Silver')
DROP DATABASE [Silver] Вот такой скрипт генерирует SSMS, для MSDE проверить с помощью EM
-
Для NULL не работает такое сравнение. Используй if Value IS NULL или if Value IS NOT NULL
|