Конференция "Базы" » MSDE использование osql.exe [MSSQL]
 
  • Rimdus (08.05.09 18:07) [0]
    Всем, Добрый день!

    Никак не могу понять почему следующий код отрабатывает в 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
  • Anatoly Podgoretsky © (08.05.09 18:42) [1]
    Ты уверен, что именно не хочет удалять?
    Сократи код до удаления и скажи результат.
  • Rimdus (08.05.09 18:54) [2]
    Сократил. Отработало без ошибок, НО база НЕ удалилась (((.
    Пользователь, под которым выполняется код - sa, и в osql и в Аналайзере конект под sa.
  • Rimdus (08.05.09 19:01) [3]
    Собственно удалить можно так:
    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 при существующей базе. Как-то это не верно (
  • IS NULL (08.05.09 19:38) [4]

    > IF DB_ID('Silver') <> NULL
  • Anatoly Podgoretsky © (08.05.09 19:59) [5]
    USE Master
    GO
    IF EXISTS (SELECT name FROM sys.databases WHERE name = N'Silver')
    DROP DATABASE [Silver]



    Вот такой скрипт генерирует SSMS, для MSDE проверить с помощью EM
  • Ega23 © (12.05.09 11:44) [6]
    Для NULL не работает такое сравнение. Используй
    if Value IS NULL
    или
    if Value IS NOT NULL
 
Конференция "Базы" » MSDE использование osql.exe [MSSQL]
Есть новые Нет новых   [134473   +33][b:0][p:0.001]