Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Просьба сильно не пинать, если что ...
Есть простой скрипт
USE Master
----------------------------------------------------------------------------------------------------------
IF HAS_DBACCESS('Copy') = 1 BEGIN
ALTER DATABASE Copy SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE Copy
END
----------------------------------------------------------------------------------------------------------
CREATE DATABASE Copy
----------------------------------------------------------------------------------------------------------
USE Copy
На последнем операторе ругается, так как нет такой базы на сервере нету(хотя она создасться строчкой ранее).
Можно ли как нить по другому сменить контент на базу Copy?
3 авг 09, 12:03    [7490139]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
Вставить перед "USE Copy" команду GO
3 авг 09, 12:05    [7490149]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ругается то компилятор. Потому что при компиляции этой базы нет.
Т.е. USE Copy нужно выполнять после успешного завершения команды создания базы
3 авг 09, 12:07    [7490157]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Slider_spb
Вставить перед "USE Copy" команду GO

не работает, пишет:
"Could not locate entry in sysdatabases for database 'Copy'. No entry found with that name. Make sure that the name is entered correctly."
ps
если что, то
"Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: )"
3 авг 09, 12:12    [7490175]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Glory
Member

Откуда:
Сообщений: 104760
ЮрийМ
Slider_spb
Вставить перед "USE Copy" команду GO

не работает, пишет:
"Could not locate entry in sysdatabases for database 'Copy'. No entry found with that name. Make sure that the name is entered correctly."

Это ошибка компиляции, а не ошибка выполнения
3 авг 09, 12:14    [7490183]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ЮрийМ
На последнем операторе ругается, так как нет такой базы
А как Вы узнали, что именно на последнем?
3 авг 09, 12:15    [7490188]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Glory
Ругается то компилятор. Потому что при компиляции этой базы нет.
Т.е. USE Copy нужно выполнять после успешного завершения команды создания базы

Значит, данный job следует разделить на два этапа?
А можно как нить в QA результат увидеть?
3 авг 09, 12:15    [7490190]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Glory
Member

Откуда:
Сообщений: 104760
Откуда взялся job ?
И какой результат по-вашему должен выдать этот скрипт ?
3 авг 09, 12:17    [7490198]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Паганель
ЮрийМ
На последнем операторе ругается, так как нет такой базы
А как Вы узнали, что именно на последнем?

Э... ну в QA пишется номер строки с ошибкой
"Server: Msg 911, Level 16, State 1, Line 10
Could not locate entry in sysdatabases for database 'Copy'. No entry found with that name. Make sure that the name is entered correctly.
"
ps
Если конечно я правильно понял вопрос.
3 авг 09, 12:19    [7490212]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Glory
Откуда взялся job ?
И какой результат по-вашему должен выдать этот скрипт ?

Job взялся из EM - в идёт QA отладка.
Никакого результата. Нужно что бы просто отработал без ошибок.
ps
В дальнейшем в Job-e добавлю восстановление (RESTORE DATABASE) и пару изменений (UPDATE)
3 авг 09, 12:24    [7490241]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
Если до выполнения скрипта базы не существоало, то может помочь использование EXEC ('USE Copy')
3 авг 09, 12:25    [7490248]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ЮрийМ
Slider_spb
Вставить перед "USE Copy" команду GO

не работает
А у меня работает:
USE Master
----------------------------------------------------------------------------------------------------------
IF HAS_DBACCESS('Copy') = 1 BEGIN
ALTER DATABASE Copy SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE Copy
END
----------------------------------------------------------------------------------------------------------
CREATE DATABASE Copy
----------------------------------------------------------------------------------------------------------
go
USE Copy
select @@version

Deleting database file 'd:\program files\microsoft sql server 2000\data\MSSQL$SQL2000\data\Copy_log.LDF'.
Deleting database file 'd:\program files\microsoft sql server 2000\data\MSSQL$SQL2000\data\Copy.mdf'.
The CREATE DATABASE process is allocating 0.75 MB on disk 'Copy'.
The CREATE DATABASE process is allocating 0.49 MB on disk 'Copy_log'.
                                                                                                                                                                                                                                                                 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
Microsoft SQL Server  2000 - 8.00.2039 (Intel X86) 
	May  3 2005 23:18:38 
	Copyright (c) 1988-2003 Microsoft Corporation
	Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)


(1 row(s) affected)
3 авг 09, 12:25    [7490249]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Glory
Member

Откуда:
Сообщений: 104760
ЮрийМ
Glory
Откуда взялся job ?
И какой результат по-вашему должен выдать этот скрипт ?

Job взялся из EM - в идёт QA отладка.
Никакого результата. Нужно что бы просто отработал без ошибок.
ps
В дальнейшем в Job-e добавлю восстановление (RESTORE DATABASE) и пару изменений (UPDATE)

- Перед RESTORE DATABASE не нужно удалять базу и создавать ее заново
- UPDATE умеет работать с объектами других баз. Достаточно указывать полное имя объекта
3 авг 09, 12:26    [7490255]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
Если это JOB, то действиетльно создание и использование БД лучше разделить на разные шаги (взаимозависимые) job-а
3 авг 09, 12:29    [7490276]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62917
Не является ли слово COPY зарезервированым словом?

--
http://www.podgoretsky.com
3 авг 09, 12:29    [7490279]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Паганель

А у меня работает:....

Работает "Выполнить" или "Проверить"?
ps
у меня только "Выполнить". Сейчас попробую с EXEC
3 авг 09, 12:34    [7490303]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Glory

- Перед RESTORE DATABASE не нужно удалять базу и создавать ее заново
- UPDATE умеет работать с объектами других баз. Достаточно указывать полное имя объекта

Первое знаю, второе запомню.
Спасибо.
3 авг 09, 12:35    [7490309]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ЮрийМ
Работает "Выполнить" или "Проверить"?
У меня не было ошибки ни при Выполнить ни при Проверить (только что еще раз попробовал F5 и Ctrl+F5)
3 авг 09, 12:38    [7490322]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Slider_spb
Если до выполнения скрипта базы не существоало, то может помочь использование EXEC ('USE Copy')

Ага Пошло!
ps
Скрипт таки разделю
3 авг 09, 12:38    [7490329]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Паганель
ЮрийМ
Работает "Выполнить" или "Проверить"?
У меня не было ошибки ни при Выполнить ни при Проверить (только что еще раз попробовал F5 и Ctrl+F5)

Паганель, всё равно с Вашим "GO" стало лучше. Спасибо!
3 авг 09, 12:40    [7490338]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Glory
Member

Откуда:
Сообщений: 104760
ЮрийМ
Slider_spb
Если до выполнения скрипта базы не существоало, то может помочь использование EXEC ('USE Copy')

Ага Пошло!

Только вот контекст базы после завершения EXEC () будет вовсе не Copy
3 авг 09, 12:41    [7490343]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Anatoly Podgoretsky
Не является ли слово COPY зарезервированым словом?


Сильно... об этом я даже не подумал.
Reserved Keywords
"CONTINUE
CONVERT
CREATE
CROSS"

но вроде COPY нет :)
3 авг 09, 12:45    [7490371]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
Slider_spb
Member

Откуда:
Сообщений: 800
Glory
ЮрийМ
Slider_spb
Если до выполнения скрипта базы не существоало, то может помочь использование EXEC ('USE Copy')

Ага Пошло!

Только вот контекст базы после завершения EXEC () будет вовсе не Copy

Да, совсем забыл что для USE это не работает :(
3 авг 09, 12:47    [7490381]     Ответить | Цитировать Сообщить модератору
 Re: Команда USE  [new]
ЮрийМ
Member

Откуда:
Сообщений: 64
Glory

Только вот контекст базы после завершения EXEC () будет вовсе не Copy

мда... облом-с - не переключился :(
ps
ну тогда "GO" обойдемся :)
3 авг 09, 12:49    [7490392]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить