Имя: Пароль:
IT
Админ
Бекап SQL через ADO не работает
0 vde69
 
19.04.24
13:11
запрос

USE Ar;        
EXEC xp_cmdshell 'net use R: \\192.168.50.1\Share пароль /user:пользователь /persistent:no';
BACKUP DATABASE Ar
TO DISK = 'R:\Ar.trn'
WITH COPY_ONLY, NOFORMAT, NOINIT, COMPRESSION, SKIP, NOREWIND, NOUNLOAD,  STATS = 10 ;
EXEC xp_cmdshell 'net use R: /delete';


через консоль SQL работает,


а через ADO  делает файл (приличного размера), но потом  все заканчивается ошибкой

BACKUP failed to complete the command BACKUP DATABASE Ar

Ошибка: 3041, серьезность: 16, состояние: 1.

после этой ошибки файл бекапа (возможно не полный) удаляется.
1 Lama12
 
19.04.24
13:32
2 vde69
 
19.04.24
13:36
(1) с одной стороны похоже, но почему из консоли работает а по ADO нет?

и как понять причину?
3 eklmn
 
19.04.24
13:37
(0) ты ж вроде сам спец за полляма? )
4 Lama12
 
19.04.24
13:50
(2) Ну, если есть возможность...
Я бы поднял копию СУБД. Попробовал воспроизвести ситуацию. Если не воспроизводится, то дело в окружении. Если воспроизводится то поставил бы все апдейты и еще раз попробовал.
5 vde69
 
19.04.24
13:58
(4) попробовал на другом сервере - все работает
6 Lama12
 
19.04.24
14:05
(5) Интересно. Версии ядра СУБД совпадают до последней цифры?
Версии библиотек .NET Framework совпадают?
7 vde69
 
19.04.24
14:24
нашел причину, ADO возвращает несколько промежуточных состояний (типа проценты бекапа), 1c это воспринимает как завершение и шлепает дальше.
8 Sochinec
 
19.04.24
14:29
(7) а как связано с 1с ?
9 vde69
 
19.04.24
14:30
ADO запрос на создание копии из 1с вызываю
10 vde69
 
19.04.24
20:32
решение для тех кто сюда зайдет позже:

делим сабж на 3 запроса и выполняем по отдельности
-------------------
USE Ar;        
EXEC xp_cmdshell 'net use R: \\192.168.50.1\Share пароль /user:пользователь /persistent:no';
-------------------
BACKUP DATABASE Ar
TO DISK = 'R:\Ar.trn'
WITH COPY_ONLY, NOFORMAT, NOINIT, COMPRESSION, SKIP, NOREWIND, NOUNLOAD,  STATS = 10 ;
-------------------
EXEC xp_cmdshell 'net use R: /delete';
-------------------
11 katamoto
 
20.04.24
05:36
(7) Возможно помогло бы просто STATS = 10 убрать, чтоб статус не возвращался
AdBlock убивает бесплатный контент. 1Сергей