Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > отключение соединений в процедуре


Автор: Neymexa 6.4.2010, 09:20
Код

alter proc restore_auto
as
insert  temp_table exec xp_cmdshell 'dir "D:Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\test" /B'
--select max(backup_date) from temp_table

go

declare  @physical_backup_device_name_var nvarchar(100)
select @physical_backup_device_name_var=N'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\test\'+
max(backup_date) from temp_table
RESTORE DATABASE test 
FROM  
DISK = @physical_backup_device_name_var
WITH 
FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10

go

use test
delete from temp_table


как в красном участке кода сделать БД не используемой.
я объявляю @physical_backup_device_name_var
потом определяю ее 
и думаю затем нужно освободить БД  как-то, чтобы она не использовалась.
есть способ перед declare написать use master ,но тогда будет ошибка так как затем идет restore, а в master нет temp_table
 smile  smile  smile 

Автор: tusha 6.4.2010, 09:43
Код

sp_dboption 'single user', 'true'

?

Автор: Neymexa 6.4.2010, 09:53
Цитата(tusha @ 6.4.2010,  09:43)
Код

sp_dboption 'single user', 'true'

?

Код

declare  @physical_backup_device_name_var nvarchar(100)
select @physical_backup_device_name_var=N'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\test\'+
max(backup_date) from temp_table

ALTER DATABASE test
SET single_user 
WITH ROLLBACK IMMEDIATE;

RESTORE DATABASE test 
FROM  
DISK = @physical_backup_device_name_var
WITH 
FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10
go


ругается Недопустимое имя устройства нулевой длины. Повторите инструкцию BACKUP с допустимым именем устройства.

Автор: tusha 6.4.2010, 12:23
профайлер поможет, возможно Вы не правильно создали бекап) ,бекапте/ресторьте ручками, отловите трейсы и все станет ясно. для експреса есть бесплатная версия профайлера - называется AnjLab Profiler

Автор: Akina 6.4.2010, 14:11

M
Akina
Neymexa, используйте тег "Код".

Автор: Neymexa 6.4.2010, 15:25
Цитата(tusha @ 6.4.2010,  12:23)
профайлер поможет, возможно Вы не правильно создали бекап) ,бекапте/ресторьте ручками, отловите трейсы и все станет ясно. для експреса есть бесплатная версия профайлера - называется AnjLab Profiler

понял почему он ругался.
нужно было добавить запись в sys.backup_devices(список устройств) с помошью  sp_addumpdevice.

но проблему это не решило.
есть еще предложения? smile 





сори акина  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)