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

Откуда:
Сообщений: 311
Господа (и дамы), проблема.
При попытке восстановить бекап из файла, студия кричит:

TITLE: Microsoft SQL Server Management Studio
------------------------------

Restore failed for Server ' '. (Microsoft.SqlServer.Smo)

------------------------------
ADDITIONAL INFORMATION:

System.Data.SqlClient.SqlError: RESTORE cannot process database 'base' because it is in use by this session. It is recommended that the master database be used when performing this operation. (Microsoft.SqlServer.Smo)

при этом, запуск sp_who не обнаруживает это базы в списке используемых.
как можно посмотреть кто юзает базу, или что происходит?
22 июн 09, 14:33    [7328522]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
bacalavr
Member

Откуда:
Сообщений: 311
ах, да

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
22 июн 09, 14:34    [7328531]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
GSerg
Member

Откуда: Магадан
Сообщений: 205
А разве вам в сообщении об ошибке не написано, кто именно юзает эту базу?
Да ещё и написано, что делать в этом случае.
22 июн 09, 14:35    [7328549]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
bacalavr
Member

Откуда:
Сообщений: 311
хм, делаю так:
в студии выбираю мастер, правой кнопкой - рестор, указываю нужную мне базу, указываю файл.

вылетает эта ошибка.
22 июн 09, 14:37    [7328568]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
а плюсик не нажат около этой базы? надо чтобы база была свернута в SSMS.

для спящего время бодрствования равносильно сну
22 июн 09, 14:50    [7328673]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
bacalavr
Member

Откуда:
Сообщений: 311
нет, не нажато ничего
22 июн 09, 14:54    [7328706]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
bacalavr
нет, не нажато ничего


Ну чудес не бывает, если пишет, что база используется, значит используется.. Вы в момент бэкапа снимите показания sp_who2
22 июн 09, 14:57    [7328732]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
bacalavr
Member

Откуда:
Сообщений: 311
я понимаю, что чудес не бывает, и что сервер не врет мне из личной выгоды)
просто спрашиваю, как отследить что не так.
sp_who2 также не показывает эту базу
22 июн 09, 15:00    [7328753]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
chans_max
Member

Откуда: http://i-howto.ru/
Сообщений: 53683
bacalavr
я понимаю, что чудес не бывает, и что сервер не врет мне из личной выгоды)
просто спрашиваю, как отследить что не так.
sp_who2 также не показывает эту базу


попробуйте перевести базу сингл юзер моде, повторите попытку должно получится.
22 июн 09, 15:57    [7329231]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
bacalavr
Member

Откуда:
Сообщений: 311
вопрос снят, всем спасибо.
дело оказалось в нехватке места на диске.
только почему мне это сказала не студия, а запрос на рестор - другой вопрос.
22 июн 09, 16:00    [7329268]     Ответить | Цитировать Сообщить модератору
 Re: Восстановить бекап  [new]
chans_max
Member

Откуда: http://i-howto.ru/
Сообщений: 53683
Млжно поюзать этот скрипт он прибьет все подключения со списком оных

SET NOCOUNT ON
DECLARE @DB_NAME VARCHAR(128)
SET @DB_NAME = DB_NAME()

DECLARE @QUERY VARCHAR(1024)
SET @QUERY = 'CREATE TABLE TEMPDB..TEMP (SPID VARCHAR(128), ECID VARCHAR(128),
STATUS VARCHAR(128), LOGINAME VARCHAR(128), HOSTNAME VARCHAR(128),
BLK VARCHAR(128), DBNAME VARCHAR(128), CMD VARCHAR(128)'

SET @QUERY = @QUERY + ')'
IF OBJECT_ID('TEMPDB..TEMP') IS NOT NULL DROP TABLE TEMPDB..TEMP
EXECUTE(@QUERY)
INSERT INTO TEMPDB..TEMP EXEC SP_WHO

DECLARE @SPID INT, @COUNTER INT, @CMD VARCHAR(256)
DECLARE @LOGINAME VARCHAR(128), @HOSTNAME VARCHAR(128)

DECLARE #TEMP_CURSOR CURSOR FOR
    SELECT SPID, LOGINAME, HOSTNAME
    FROM TEMPDB..TEMP WHERE DBNAME = @DB_NAME AND SPID != @@SPID
OPEN #TEMP_CURSOR
WHILE 1 = 1 BEGIN
      FETCH NEXT FROM #TEMP_CURSOR INTO @SPID, @LOGINAME, @HOSTNAME
      IF @@FETCH_STATUS <> 0 BREAK

      SET @CMD = 'KILL ' + CONVERT(VARCHAR, @SPID)
      EXEC (@CMD)

      PRINT '[' + @LOGINAME + '], hostname [' + RTRIM(@HOSTNAME) + '] отключен от БД [' + @DB_NAME + ']'
      SET @COUNTER = ISNULL(@COUNTER, 0) + 1
END
CLOSE #TEMP_CURSOR
DEALLOCATE #TEMP_CURSOR

IF @COUNTER IS NULL PRINT 'У БД [' + @DB_NAME + '] нет пользовательских подключений'

22 июн 09, 16:01    [7329278]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить