Тонкая настройка ежедневного резервного копирования базы данных 1С средствами SQL ver. 2014 (SP3) - 12.0.6024.0 (X64)

Публикация № 1131561

Администрирование - Администрирование данных 1С - Архивирование (backup)

SQL резервное копирование бекап BackUP средства Server диагностика стабильность производительность мониторинг расследование

Хочу вам предложить небольшой пример, как можно реализовать резервное копирование 1С-ых баз данных средствами SQL. Данный материал не претендует на пулитцеровскую премию. Но возможно кому-то будет интересно узнать, что-то новенькое. Данный материал для резервного копирования только одной базы данных. А именно, если у вас 20-ть баз, то вам придется создавать 20-ть планов обслуживания для каждой базы индивидуально. (Слава разработчикам SQL, они разрешили копировать блоки из одного плана в другой, вам остается только произвести небольшую настройку для каждого скопированного блока - некоторые настройки блоков сбрасываются и выставляются значением по умолчанию и остаются неактивными)

Резервное копирование начинается через план обслуживания.
С настройкой службой оповещения вы сможете ознакомиться по ссылке Настройка Database Mail в MS SQL Server 2005 и старше



     Далее из панели элементов добавляем нужную задачу и помещаем в свой план обслуживания.

     
 

  1. Добавляем "самый главный" блок "Проверка целостности базы данных", указываем только одну базу данных.
    В нашем примере это будет база с именем "ZUP"



    В качестве обработки ошибки рекомендую добавить блок "Уведомление оператора". Блок простой и  при правильной настройке Database Mail SQL прост в настройке.




    У вас должна получиться конструкция:


     
  2. При успешной обработке блока "Проверка целостности БД", добавляем блок "Выполнение инструкции T-SQL"


    Инструкция SQL создает нужные каталоги на вашем "СХД" Системы хранения данных
    Скрипт не обязателен, но полезно, если вы меняете носители, для меня же было любопытно посмотреть, на что способен SQL при работе с накопителями.
     
    Скрипт:
    SET NOCOUNT ON
    
    DECLARE @BasesValue varchar (200);       --Имя базы
    
    --Путь к новому каталогу...
    Set @BasesValue      = 'zup';  --Имя базы данных
    
    DECLARE @FileName varchar(500)
    DECLARE @FileName_FULL varchar(500)
    DECLARE @FileName_Little varchar(500)
    DECLARE @FileNameCreat varchar(500)
    
    Set @FileName_FULL ='G:\BackupDB\'+@BasesValue+'\FULL'
    Set @FileName_Little ='G:\BackupDB\'+@BasesValue+'\Little'
    
    DECLARE @FileExists TABLE (File_Exists int
       ,File_is_a_Directory int
       ,parent_directory_exists int)
    
    
    Set @FileName = @FileName_FULL 
    Set @FileNameCreat = 'MD '+@FileName
    
    INSERT INTO @FileExists
    (File_Exists, file_is_a_directory, parent_directory_exists)
    EXEC Master.dbo.xp_fileexist @FileName
    
    If EXISTS(SELECT * FROM @FileExists Where File_is_a_Directory = 0) 
      Begin
    
      exec sp_configure 'show advanced',1
      reconfigure with override
      exec sp_configure 'xp_cmdshell',1
      reconfigure with override
    
     BEGIN TRY  
          Select 'Создать папку'
       EXEC xp_cmdshell @FileNameCreat
     END TRY  
     BEGIN CATCH  
         -- Execute error retrieval routine.  
         Select 'Ошибка, каталог не создан или что-то пошло не так!'
     END CATCH; 
    
      exec sp_configure 'xp_cmdshell',0
      reconfigure with override
      exec sp_configure 'show advanced',0
      reconfigure with override
      
      End
    
    --Проверим папку для короткого архива
    DELETE FROM @FileExists
    
    
    Set @FileName = @FileName_Little 
    Set @FileNameCreat = 'MD '+@FileName
    
    INSERT INTO @FileExists
    (File_Exists, file_is_a_directory, parent_directory_exists)
    EXEC Master.dbo.xp_fileexist @FileName
    
    If EXISTS(SELECT * FROM @FileExists Where File_is_a_Directory = 0) 
      Begin
    
      exec sp_configure 'show advanced',1
      reconfigure with override
      exec sp_configure 'xp_cmdshell',1
      reconfigure with override
    
     BEGIN TRY  
          Select 'Создать папку'
       EXEC xp_cmdshell @FileNameCreat
     END TRY  
     BEGIN CATCH  
         -- Execute error retrieval routine.  
         Select 'Ошибка, каталог не создан или что-то пошло не так!'
     END CATCH; 
    
      exec sp_configure 'xp_cmdshell',0
      reconfigure with override
      exec sp_configure 'show advanced',0
      reconfigure with override
      
      End
    
    GO
    

    По окончании выполнение блока задание продолжает выполнение вне зависимости от результата. Т.е. условие выполнения блока "Завершение".

  3. Следующим добавляем блок "Выполнение инструкции T-SQL".


    Инструкция SQL проверяет, сколько дней прошло, после того, как выполнялось полное резервное копирование, соответствие размера полной и разностной резервной копии, наличие полной резервной копии в каталоге.
    В зависимости от настроек проверяется:
           - было ли выполнено резервное копирование в нужную папку;
           - существует ли файл полного резервирования в нужной папке;
           - соотношение размера файла полного копии к разностной.
    Данный блок выполняет роль семафора. При ошибке будет выполнен блок плана по полному резервному копированию. При успешном выполнении инструкции, последует выполнение блока по разностному резервному копированию.

    Данная инструкция функционал семафора выполняет по вызову исключения:
                 
    RAISERROR ('Эмуляция ошибки, для блока условия: Будет сформирован полный BackUp', -- Message text.  
                   16, -- Severity.  
                   1 -- State.  
                   );

    Скрипт:
    DECLARE @BasesValue varchar (200),       --Имя базы
    		@BasesPathFULL varchar (500),    --Путь к бекапам FULL
    		@BasesPathLittle varchar (500),  --Путь к бекапам Little
    		@BasesSizeProc numeric(20, 0),   --Процент разницы базы
    		@CountDay numeric(20, 0)        --Количество дней, после которых будет произведен полный бекап
    DECLARE @FindFullFile numeric(20, 0),   --Проверять присутствие файла
    		@TestFullBackUp numeric(20, 0)  --Проверять Файл полного бекапа на возможность восстановить (заметил, что железо может подвести, а SQL не отмечает ошибки при проверке)
    
    Set @BasesValue      = 'zup'  --Имя базы данных
    Set @BasesSizeProc   = 80;                 --разница в процентах от полного бекапа и частичного бекапа
    Set @CountDay        = 15;                  --Через н-ое кол-во дней будет сформирован полный бекап, если ноль, то дни не участвуют.
    Set @FindFullFile    = 1;                 --1 = проверять файл полного бекапа (FULL), 0 = пропустить проверку, 2 = всегда делать полный бекап (любое число)
    Set @TestFullBackUp  = 1;                 --1 = проверять файл на возможность восстановить данные, 0 = данная проверка пропускается... (RESTORE VERIFYONLY)
    
    Set @BasesPathFULL   = 'G:\BackupDB\'+@BasesValue+'\FULL\'  --Путь к полному бекапу, (обязателен!)
    Set @BasesPathLittle = 'G:\BackupDB\'+@BasesValue+'\Little\'  --Путь к короткому бекапу (пока не используется)
    
    --Для файла
    DECLARE @FileName_FULL varchar(500),     --Путь к искомому файлу, он получается из БД
    		@IsFindFile numeric(20, 0);      --Признак того, что файл найден или нет
    DECLARE @FileExists TABLE (File_Exists int
    			,File_is_a_Directory int
    			,parent_directory_exists int)
    
    --Таблица содержащая последний бекап... с признаком "Только резервное копирование" = 0
    DECLARE @LastBackUp TABLE (R_database_name nvarchar(128),
    							R_backup_size numeric(20, 0),
    							R_compressed_backup_size numeric(20, 0),
    							R_physical_device_name nvarchar(260),
    							R_backup_start_date datetime,
    							R_is_copy_only bit,
    							R_checkpoint_lsn numeric(25, 0),
    							R_database_backup_lsn numeric(25, 0),
    							R_type char(1),
    							R_user_name nvarchar(128),
    							R_backup_set_uuid uniqueidentifier,
    							R_differential_base_lsn numeric(25, 0),
    							R_differential_base_guid uniqueidentifier)
    
    --Таблица содержащая последний Полный бекап, с признаком "Только резервное копирование" = 0
    DECLARE @LastFullBackUp TABLE (R_database_name nvarchar(128),
    							R_backup_size numeric(20, 0),
    							R_compressed_backup_size numeric(20, 0),
    							R_physical_device_name nvarchar(260),
    							R_backup_start_date datetime,
    							R_is_copy_only bit,
    							R_checkpoint_lsn numeric(25, 0),
    							R_database_backup_lsn numeric(25, 0),
    							R_type char(1),
    							R_user_name nvarchar(128),
    							R_backup_set_uuid uniqueidentifier,
    							R_differential_base_lsn numeric(25, 0),
    							R_differential_base_guid uniqueidentifier)
    
    --Результирующая таблица для определения условия выполнения полного бекапа или короткого...
    DECLARE @ResultBackUp TABLE (ProcFULL numeric(20, 0),
    							TypeBackUp char(1),
    							BasesSizeProc numeric(25, 18),
    							CountDayLittleBackUp numeric(20, 0),
    							DataBackUp datetime,
    							FullPath nvarchar(260),
    							DayFullBackUp numeric(20, 0))
    
    Use [master]
    
    --Последний бекап, обычно короткий, но один раз полный
    INSERT @LastBackUp (R_database_name, R_backup_size, R_compressed_backup_size, R_physical_device_name, R_backup_start_date, R_is_copy_only, R_checkpoint_lsn, 
    					R_database_backup_lsn, R_type, R_user_name, R_backup_set_uuid, R_differential_base_lsn,	R_differential_base_guid)
    SELECT TOP 1
    s.database_name as R_database_name, --имя базы
    s.backup_size as R_backup_size,     --размер базы во время бекапа
    s.compressed_backup_size as R_compressed_backup_size, --Размер бекапа после сжатия, файл bak
    m.physical_device_name as R_physical_device_name, --Путь бекапирования
    s.backup_start_date as R_backup_start_date,       --Дата и время создания бекапа
    s.is_copy_only as R_is_copy_only,   --Режим бекапирования, 1-только копия, 0-при полном бекапировании программа сбрасывает счетчик
    
    s.checkpoint_lsn as R_checkpoint_lsn, --ИД бекапа
    s.database_backup_lsn as R_database_backup_lsn, --ИД последнего бекапа
    s.[type] as R_type,                   --Тип резервного копирования 'D'='Full', 'I'='Differential', 'L'='Transaction Log'
    s.[user_name] as R_user_name,         --Имя пользователя
    
    s.backup_set_uuid as R_backup_set_uuid,               --УИД бекапа
    s.differential_base_lsn as R_differential_base_lsn,   --ИД бекапа владельца
    s.differential_base_guid as R_differential_base_guid --УИД бекапа владельца
    
    FROM msdb.dbo.backupset s
    INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    --WHERE s.database_name = DB_NAME() -- Remove this line for all the database
    Where s.database_name = @BasesValue
    	and s.is_copy_only = 0
    	and s.[type] <> 'L'
    ORDER BY backup_start_date DESC, backup_finish_date
    
    --Получение полного бекапа, для сверки, что бы не пропустить момент, когда могли упаковать бекап... (без галочки ТОЛЬКО рервное копирование)
    INSERT @LastFullBackUp (R_database_name, R_backup_size, R_compressed_backup_size, R_physical_device_name, R_backup_start_date, R_is_copy_only, R_checkpoint_lsn, 
    					R_database_backup_lsn, R_type, R_user_name, R_backup_set_uuid, R_differential_base_lsn,	R_differential_base_guid)
    SELECT TOP 1
    s.database_name as R_database_name, --имя базы
    s.backup_size as R_backup_size,     --размер базы во время бекапа
    s.compressed_backup_size as R_compressed_backup_size, --Размер бекапа после сжатия, файл bak
    m.physical_device_name as R_physical_device_name, --Путь бекапирования
    s.backup_start_date as R_backup_start_date,       --Дата и время создания бекапа
    s.is_copy_only as R_is_copy_only,   --Режим бекапирования, 1-только копия, 0-при полном бекапировании программа сбрасывает счетчик
    
    s.checkpoint_lsn as R_checkpoint_lsn, --ИД бекапа
    s.database_backup_lsn as R_database_backup_lsn, --ИД последнего бекапа
    s.[type] as R_type,                   --Тип резервного копирования 'D'='Full', 'I'='Differential', 'L'='Transaction Log'
    s.[user_name] as R_user_name,         --Имя пользователя
    
    s.backup_set_uuid as R_backup_set_uuid,               --УИД бекапа
    s.differential_base_lsn as R_differential_base_lsn,   --ИД бекапа владельца
    s.differential_base_guid as R_differential_base_guid  --УИД бекапа владельца
    
    FROM msdb.dbo.backupset s
    INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    --WHERE s.database_name = DB_NAME() -- Remove this line for all the database
    Where s.database_name = @BasesValue
    	and s.is_copy_only = 0
    	and s.[type] = 'D'
    ORDER BY backup_start_date DESC, backup_finish_date
    
    --Формируем окончательный бекап...
    INSERT @ResultBackUp (ProcFULL, TypeBackUp, BasesSizeProc, CountDayLittleBackUp, DataBackUp, FullPath, DayFullBackUp)
    Select 
    	Case 
    		When LBFU.R_compressed_backup_size is Null or LBFU.R_compressed_backup_size = 0 Then 0
    		When ROUND(LBUP.R_compressed_backup_size/LBFU.R_compressed_backup_size * 100,0) >= @BasesSizeProc THEN 1
    	Else 0 End as [ProcFULL]
    	,LBUP.R_type as TypeBackUp
    	,LBUP.R_compressed_backup_size/LBFU.R_compressed_backup_size as BasesSizeProc
    	,DATEDIFF(dd,LBFU.R_backup_start_date,GETDATE()) as CountDayLittleBackUp
    	,LBFU.R_backup_start_date as DataBackUp
    	,LBFU.R_physical_device_name as FullPath
    	,DATEDIFF(dd,LBFU.R_backup_start_date,GETDATE()) as DayFullBackUp
    From @LastBackUp as LBUP 
    Left outer JOIN @LastFullBackUp as LBFU 
    	on --Продолжение делать короткие бекапы, пока не наступит условие
    		LBUP.R_differential_base_lsn = LBFU.R_checkpoint_lsn and LBUP.R_type = 'I'
    		and (Case 
    				When (LBFU.R_compressed_backup_size is Null) or (LBFU.R_compressed_backup_size = 0) Then 0
    				When ROUND(LBUP.R_compressed_backup_size/LBFU.R_compressed_backup_size * 100,0) >= @BasesSizeProc THEN 1
    			Else 0 End) = 0
    		And (@CountDay = 0 
    			or DATEDIFF(dd,LBFU.R_backup_start_date,GETDATE()) < @CountDay)
    		And LBFU.R_physical_device_name Like @BasesPathFULL+'%'
    
    		--Начали делать короткие бекапы, после большого
    		or LBUP.R_checkpoint_lsn = LBFU.R_checkpoint_lsn and LBUP.R_type = 'D'
    			and DATEDIFF(dd,LBFU.R_backup_start_date,GETDATE()) <= 3
    			And LBFU.R_physical_device_name Like @BasesPathFULL+'%'
    
    Where not LBFU.R_checkpoint_lsn IS NULL
    
    --Проверим присутствие файлов
    Set @IsFindFile = 0; --По умолчанию файла нет
    Set @FileName_FULL = (Select Top 1 LB.FullPath From @ResultBackUp as LB);
    If EXISTS(Select * From @ResultBackUp as LB) and @FindFullFile = 1 
    Begin
    
    	INSERT INTO @FileExists
    		(File_Exists, file_is_a_directory, parent_directory_exists)
    	EXEC Master.dbo.xp_fileexist @FileName_FULL
    
    	If EXISTS(SELECT * FROM @FileExists Where File_Exists = 1 and file_is_a_directory = 0) 
    		Begin
    			--Select * FROM @FileExists Where File_Exists = 1 and file_is_a_directory = 0
    			Set @IsFindFile = 1;
    		End
    End
    
    --Выполним проверку и соответственно запрос...
    If EXISTS(Select * From @ResultBackUp as LB)
    	And (@FindFullFile = 0 Or @FindFullFile = 1 and @IsFindFile = 1) 
    Begin
    	Select * From @ResultBackUp as LB
    End Else Begin
    	--Select 100 / 0 as Error
    	RAISERROR ('Эмуляция ошибки, для блока условия: Будет сформирован полный BackUp', -- Message text.  
                   16, -- Severity.  
                   1 -- State.  
                   ); 
    End
    
    --Выполним проверку самого главного файла, т.к. он есть на носителе, но может содержать ошибки, а ошибок нам ненадо!!!
    --   Недавно столкнулся с тем что СХД в организации СТАРАЯ, старая КАРЛ!!! (админ её еще не заменил)
    If @TestFullBackUp = 1 
    Begin 
    	 Select @FileName_FULL --просто визуализация для отладки запроса...
         RESTORE VERIFYONLY FROM  DISK = @FileName_FULL
    End
    
    GO
    

    Должно получиться, что-то вроде:


    Далее пойдем по красной ветке, пункт № 4. А затем по зеленой ветке, пункт № 9
     
  4. Начнем процесс выполнения блоков полного резервного копирования (красная ветка).
    Сперва идет блок восстановления индексов.
    Единственное, что нужно сделать, это выбрать нужную базу данных. Все остальное остается по умолчанию.





    По окончанию выполнения задания в блоке, просто продолжаем выполнение следующего блока. Т.е. выставляем свойство "Завершение"


     
  5. После восстановления индексов следует блок "Обновление статистики".
    В блоке выбирается только база данных.





    По окончанию выполнения задания в блоке, просто продолжаем выполнение следующего блока. Т.е. выставляем свойство "Завершение". Нам не надо останавливать выполнения плана обслуживания, если что-то пойдет не так, то продолжаем.


     
  6. По окончании обновлении статистики рекомендовано выполнить очистку кэша.
    Добавляем блок "Выполнение инструкции T-SQL".


    Описание чистки кэш можно ознакомиться на сайтах:
             Очистка процедурного КЭШа (DBCC FREEPROCCACHE).
             SQL. Настройка резервного копирования.

    По команде "DBCC FLUSHPROCINDB(8)", значение "8" у вас будет другое!!!
        нужно выполнить запрос SQL:
        
    select name, database_id from sys.databases 


    Скрипт:
    --Получить ИД какой либо БД
    --Команда USE не использовалась
    --Сайт: http://memory1c.blogspot.com/2012/09/dbcc-freeproccache.html
    --Сайт: //shop.moscowsoft.com/public/199760/
    --select name, database_id from sys.databases 
    
    USE [zup]
    GO
    DBCC FLUSHPROCINDB(8)
    GO
    

    По окончанию выполнения задания в блоке, просто продолжаем выполнение следующего блока. Т.е. выставляем свойство "Завершение".


     
  7. Добавляем блок "Резервное копирование базы данных"



    В данном блоке выполняем полное резервное копирование.
    Указать:
            - тип резервной копии "Полное"
            - Выбрать базу данных



    В целевом объекте указать:
           - каталог, куда делать резервные копии
           - расширение должно оканчиваться на ".bak", иначе при восстановлении из архива вам придется его переименовывать, другие расширения SQL не видит.



    В параметрах указываем:
           - Сжимать резервные копии
           - Срок действия резервной копии нужен только если вы воспользуетесь блоком "Удаление старых архивов"
           - Проверка целостности резервной копии не помешает, мало-ли что могло пойти не так.



    В качестве обработки ошибки рекомендую добавить блок "Уведомление оператора".


    Примерно должно получиться:
  8. При успешном резервном копировании нам необходимо выполнить последние две операции:
    "Очистка после обслуживания" и "Выполнить инструкцию SQL по урезанию журнала транзакций" (последнее вы можете не добавлять, как говорят специалисты, журнал транзакций формируется автоматически и не растет бесконечно, в моем случае в виду ограниченности дискового пространства, приходится его урезать)



    "Очистка после обслуживания" - удаляет старые файлы, которые предположительно потеряли свою актуальность.
    Указываем путь к резервным копиям и указываем имя расширения файлов.
    Пунктом "Возраст файлов" мы ограничиваем период, за который будут удалены файлы.
    В моем случае это год, т.к. в дальнейшем полные резервные копии должны будут формироваться два раза в месяц. У вас возможно другой взгляд и возможность хранения резервных копий.



    Скрипт по отрезанию журнала транзакций:
    DECLARE @BasesValue varchar(200),       --Имя базы
      @BasesLog varchar(200)
    
    Set @BasesValue = 'zup';
    Set @BasesLog = @BasesValue + '_log';
    
    If EXISTS(SELECT name, recovery_model_desc FROM sys.databases WHERE name = @BasesValue and recovery_model_desc = 'FULL') 
      Begin
    
      USE [zup]
      ALTER DATABASE [zup] SET RECOVERY SIMPLE
      DBCC SHRINKFILE (@BasesLog, 1); 
      ALTER DATABASE [zup] SET RECOVERY FULL
       End
    
    SELECT name, recovery_model_desc  
       FROM sys.databases  
          WHERE name = @BasesValue ;  
    
    GO 

     

  9. Начнем выполнение разностное резервное копирование (зеленая ветка).

    Добавляем блок "Выполнение инструкции T-SQL".


    Инструкция SQL проверяет, через сколько дней выполнить обновление статистики базы данных.
    Данный блок выполняет роль семафора. При ошибке будет выполнен блок обновления статистики. При успешном выполнении инструкции, последует выполнение блока по разностного резервного копирования без обновления статистики.

    Данная инструкция функционал семафора выполняет по вызову исключения:
                 
    RAISERROR ('Эмуляция ошибки, для блока условия: Будет сформирован полный BackUp', -- Message text.  
                   16, -- Severity.  
                   1 -- State.  
                   );

    Скрипт:
    DECLARE @BasesValue varchar (200),       --Имя базы
      @CountDay numeric(20, 0)        --Количество дней, после которых будет обновлен индекс
    
    Set @BasesValue      = 'zup'  --Имя базы данных
    Set @CountDay        = 8;                  --Через н-ое кол-во дней будет обновлен индекс
    
    --Таблица содержащая последний бекап... с признаком "Только резервное копирование" = 0
    DECLARE @LastBackUp TABLE (R_database_name nvarchar(128),
           R_backup_size numeric(20, 0),
           R_compressed_backup_size numeric(20, 0),
           R_physical_device_name nvarchar(260),
           R_backup_start_date datetime,
           R_is_copy_only bit,
           R_checkpoint_lsn numeric(25, 0),
           R_database_backup_lsn numeric(25, 0),
           R_type char(1),
           R_user_name nvarchar(128),
           R_backup_set_uuid uniqueidentifier,
           R_differential_base_lsn numeric(25, 0),
           R_differential_base_guid uniqueidentifier)
    
    --Таблица содержащая последний Полный бекап, с признаком "Только резервное копирование" = 0
    DECLARE @LastFullBackUp TABLE (R_database_name nvarchar(128),
           R_backup_size numeric(20, 0),
           R_compressed_backup_size numeric(20, 0),
           R_physical_device_name nvarchar(260),
           R_backup_start_date datetime,
           R_is_copy_only bit,
           R_checkpoint_lsn numeric(25, 0),
           R_database_backup_lsn numeric(25, 0),
           R_type char(1),
           R_user_name nvarchar(128),
           R_backup_set_uuid uniqueidentifier,
           R_differential_base_lsn numeric(25, 0),
           R_differential_base_guid uniqueidentifier)
    
    --Результирующая таблица для определения условия выполнения полного бекапа или короткого...
    DECLARE @ResultBackUp TABLE (TypeBackUp char(1),
           CountDayLittleBackUp numeric(20, 0),
           DataBackUp datetime,
           FullPath nvarchar(260))
    
    Use [master]
    
    --Последний бекап, обычно короткий, но один раз полный
    INSERT @LastBackUp (R_database_name, R_backup_size, R_compressed_backup_size, R_physical_device_name, R_backup_start_date, R_is_copy_only, R_checkpoint_lsn, 
         R_database_backup_lsn, R_type, R_user_name, R_backup_set_uuid, R_differential_base_lsn, R_differential_base_guid)
    SELECT TOP 1
    s.database_name as R_database_name, --имя базы
    s.backup_size as R_backup_size,     --размер базы во время бекапа
    s.compressed_backup_size as R_compressed_backup_size, --Размер бекапа после сжатия, файл bak
    m.physical_device_name as R_physical_device_name, --Путь бекапирования
    s.backup_start_date as R_backup_start_date,       --Дата и время создания бекапа
    s.is_copy_only as R_is_copy_only,   --Режим бекапирования, 1-только копия, 0-при полном бекапировании программа сбрасывает счетчик
    
    s.checkpoint_lsn as R_checkpoint_lsn, --ИД бекапа
    s.database_backup_lsn as R_database_backup_lsn, --ИД последнего бекапа
    s.[type] as R_type,                   --Тип резервного копирования 'D'='Full', 'I'='Differential', 'L'='Transaction Log'
    s.[user_name] as R_user_name,         --Имя пользователя
    
    s.backup_set_uuid as R_backup_set_uuid,               --УИД бекапа
    s.differential_base_lsn as R_differential_base_lsn,   --ИД бекапа владельца
    s.differential_base_guid as R_differential_base_guid --УИД бекапа владельца
    
    FROM msdb.dbo.backupset s
    INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    --WHERE s.database_name = DB_NAME() -- Remove this line for all the database
    Where s.database_name = @BasesValue
     and s.is_copy_only = 0
     and s.[type] <> 'L'
    ORDER BY backup_start_date DESC, backup_finish_date
    
    --Получение полного бекапа, для сверки, что бы не пропустить момент, когда могли упаковать бекап... (без галочки ТОЛЬКО рервное копирование)
    INSERT @LastFullBackUp (R_database_name, R_backup_size, R_compressed_backup_size, R_physical_device_name, R_backup_start_date, R_is_copy_only, R_checkpoint_lsn, 
         R_database_backup_lsn, R_type, R_user_name, R_backup_set_uuid, R_differential_base_lsn, R_differential_base_guid)
    SELECT TOP 1
    s.database_name as R_database_name, --имя базы
    s.backup_size as R_backup_size,     --размер базы во время бекапа
    s.compressed_backup_size as R_compressed_backup_size, --Размер бекапа после сжатия, файл bak
    m.physical_device_name as R_physical_device_name, --Путь бекапирования
    s.backup_start_date as R_backup_start_date,       --Дата и время создания бекапа
    s.is_copy_only as R_is_copy_only,   --Режим бекапирования, 1-только копия, 0-при полном бекапировании программа сбрасывает счетчик
    
    s.checkpoint_lsn as R_checkpoint_lsn, --ИД бекапа
    s.database_backup_lsn as R_database_backup_lsn, --ИД последнего бекапа
    s.[type] as R_type,                   --Тип резервного копирования 'D'='Full', 'I'='Differential', 'L'='Transaction Log'
    s.[user_name] as R_user_name,         --Имя пользователя
    
    s.backup_set_uuid as R_backup_set_uuid,               --УИД бекапа
    s.differential_base_lsn as R_differential_base_lsn,   --ИД бекапа владельца
    s.differential_base_guid as R_differential_base_guid  --УИД бекапа владельца
    
    FROM msdb.dbo.backupset s
    INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    --WHERE s.database_name = DB_NAME() -- Remove this line for all the database
    Where s.database_name = @BasesValue
     and s.is_copy_only = 0
     and s.[type] = 'D'
    ORDER BY backup_start_date DESC, backup_finish_date
    
    --Формируем окончательный бекап...
    INSERT @ResultBackUp (TypeBackUp, CountDayLittleBackUp, DataBackUp, FullPath)
    Select 
     LBUP.R_type as TypeBackUp
     ,DATEDIFF(dd,LBFU.R_backup_start_date,GETDATE()) as CountDayLittleBackUp
     ,LBFU.R_backup_start_date as DataBackUp
     ,LBFU.R_physical_device_name as FullPath
    From @LastBackUp as LBUP 
    Left outer JOIN @LastFullBackUp as LBFU 
     on --Продолжение делать короткие бекапы, пока не наступит условие
      LBUP.R_differential_base_lsn = LBFU.R_checkpoint_lsn and LBUP.R_type = 'I'
      And (@CountDay = 0 
       or DATEDIFF(dd,LBFU.R_backup_start_date,GETDATE()) > 0
       And DATEDIFF(dd,LBFU.R_backup_start_date,GETDATE()) % @CountDay = 0)
    
    Where not LBFU.R_checkpoint_lsn IS NULL
    
    --Выполним проверку и соответственно запрос...
    If not EXISTS(Select * From @ResultBackUp as LB) 
    Begin
     Select * From @ResultBackUp as LB
    End Else Begin
     --Select 100 / 0 as Error
     Select * From @ResultBackUp as LB
     RAISERROR ('Эмуляция ошибки, для блока условия: Будет обновлен индекс', -- Message text.  
                   16, -- Severity.  
                   1 -- State.  
                   ); 
    End
    
    GO

    В итоге у вас получится следующая конструкция.
    В названии фигурирует переиндексация, но в виду того что у меня при этом происходил катастрофический рост журнала транзакции, блок по обновлению индексов был исключен. (но вы всегда можете пойти другим путем)


    Внимание!!!
    В дальнейшем, две ветки отличаются только обновлением статистики, но в виду того, что план обслуживания примитивен и не позволяет ссылаться на один и тот же блок "Резервного копирования", вам придется выполнять один и тот же набор настроек несколько раз. (SQL ошибок не выдает, но и копий не делает, просто нечего не происходит, как будто для SQL ваших блоков, к которым вы ссылаетесь из нескольких мест, не существует)
     
  10. Добавим блоки по обновлению статистики (красная ветка).
    Подробнее по обновлению статистики вы можете посмотреть в пунктах № 5 и № 6
    В данном случае они идентичны.

    В итоге у вас получится небольшая конструкция:

     
  11. Окончание красной ветки и продолжение зеленой ветки.
    Добавляем блок "Резервное копирование базы данных"

    (и помним, что нам нужно сделать два идентичных блока по резервированию, т.к. планировщик SQL не позволяет оптимизировать настройку)

    Общая настройка:


    Целевой объект:
    Как вы можете заметить, расширение файла содержит те самые буквы с точкой ".bak


    В качестве обработки ошибки рекомендую добавить блок "Уведомление оператора".


    В дальнейшем настройка примет вид:

     
  12. При успешном резервном копировании нам необходимо выполнить последнюю операцию,
    "Очистка после обслуживания"


    "Очистка после обслуживания" - удаляет старые файлы, которые предположительно потеряли свою актуальность.



    Как вы могли заметить я установил для промежуточных резервных копий всего 3 месяца в виду того, что они как правило занимают не так много места на носителях.

    В оригинале у вас получится вот такая конструкция промежуточного копирования:


     
  13. Результатом будет небольшой план обслуживания, который реализован немного не традиционно в виду недостатков настройки.

     
  14. Ссылки на материал, который я почерпнул для данного резервного копирования:
       - Настройка плана обслуживания MS SQL Server для 1С Предприятия.
       - Всё о сокращении Transaction Log для MS SQL 2008/2012
       - Как через t-sql получить уникальный ID сервера(компьютера)
       - File Validation in SQL Server with xp_fileexist stored procedure
       - Создать папку
       - КАК ПРАВИЛЬНО НАСТРОИТЬ MS SQL SERVER ДЛЯ «1С»: ПЛАНЫ ОБСЛУЖИВАНИЯ
       - Резервное копирование и восстановление информационной базы 1С
       - Настройка Microsoft SQL Server для 1С Предприятие (Maintenance Plans)
       - Лекция 5: Полная модель восстановления
       - Набор скриптов для знакомства с SQL Server
  15. Дополнительно...
    Скрипт для оптимизации пункта № 6, предоставил Виталий Кривенко (v.krivenko)
    use <база>;
    DECLARE @DB_ID int;
    SET @DB_ID = DB_ID();
    DBCC FLUSHPROCINDB(@DB_ID)
    Другие возможности от   SQL Server Backup от Ola Hallengren

    Описывать настройку расписания не буду, там до примитивности просто, дерзайте.
    Может кому пригодится.

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Rans 6 08.10.19 10:01 Сейчас в теме
Добрый день! Статья интересная, но считаю, что ставить зависимость всего плана от успешной проверки целостности бд неправильно. Рискуете остаться вообще без бэкапа.
Дмитрий74Чел; MCV; Liris; kiruha; +4 Ответить
2. DrZombi 116 08.10.19 10:06 Сейчас в теме
(1) Зачем нам бекап, который уже не совсем корректный?
Вы эту ошибку можете обработать спустя неделю, если штат людей не позволяет сразу обработать сообщения, либо они у вас не настроены.

А так, на мой взгляд, лучше иметь нормальную копию, чем битую, и при этом вы потом не выясните, битая она или нет, если будете восстанавливаться. :)

...Дело каждого, по каким граблям шагать...
3. Rans 6 08.10.19 12:28 Сейчас в теме
(2) Возможно :) Но все-таки лучше иметь хоть какую копию, чем битую базу без копии. Вот интересная статья по данной теме: https://wiseadvice-it.ru/o-kompanii/blog/articles/rezervnoe-kopirovanie-i-vosstanovlenie-informacionnoi-bazy-1s/
Дмитрий74Чел; GreenDragon; +2 Ответить
4. DrZombi 116 08.10.19 12:45 Сейчас в теме
(3) Да любопытно, но мне нужен был полный бекап (хотя бы раз в месяц) с экономным бекапированием на каждый день.
Можно заморочиться и побекапить журнал транзакций, но не вижу в этим необходимости в нашем случаи.

А так, все это "баловство" лишь ориентировано на ознакомление с возможностью планировщика SQL.

Если честно, я в нем разочарован.
- мне не удалось свести оформление переменных к одному блоку, т.е. я к примеру вызвал бы инструкцию SQL № 1 и назначил бы там нужные параметры и значения. А дальше просто бы подставлял бы переменным нужные значения.
- Интерфейс планировщика может больше, чем сам способен обработать планировщик, т.е. вы не может разместить один блок "Резервное копирование" и из разных ответвлений выполнить его. SQL планировщик ваш блок проигнорирует, и даже не заругается на вас.
- Не до конца понял, зачем вообще там нужны (в планировщике) глобальные переменные, ибо описания, как ими пользоваться я так и не нашел на просторах сети. (печально)
- Очень разочаровался в работе с диском, оказывается SQL запрещает писать через запросы, и что бы это обойти приходится отключать безопасность.
- Нельзя настроить планировщик так, что бы к примеру в интервале у вас удалялись только определенные копии бекапа, а одна в периоде оставалась.
7. ADirks 182 09.10.19 08:05 Сейчас в теме
(4) Чтобы не писать все эти мегатонны кода в планировщике, есть такая штука, как stored procedures
Ну и рекомендую посмотреть в https://ola.hallengren.com/sql-server-backup.html
там скорее всего всё, что только можно придумать, уже сделано :)
asved.ru; +1 Ответить
8. DrZombi 116 09.10.19 08:14 Сейчас в теме
(7) Спасибо, что сделано.
А теперь еще расскажите, как это сделать в планировщике, всем нам.

Что бы мы смогли достойно оценить и наглядно сравнить ваше утверждение... :)
13. ADirks 182 09.10.19 13:38 Сейчас в теме
(8) Там, между прочим, и примеры есть

Examples

A. Back up all user databases, using checksums and compression; verify the backup; and delete old backup files
EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@Verify = 'Y',
@Compress = 'Y',
@CheckSum = 'Y',
@CleanupTime = 24


B. Back up all user databases to a network share, and verify the backup
EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = '\\Server1\Backup',
@BackupType = 'FULL',
@Verify = 'Y'
14. DrZombi 116 09.10.19 13:51 Сейчас в теме
(13) Вы наверное не прониклись моей задачей.
Мне не нужен полный бекап на каждый день.
У меня есть базы, которые "АРХИВНЫЕ" (почти), народ в них не работает.
Но их бекапят, и бекап раз в год, желательно делать.
А все последующее время, у меня должны делаться "МИНИ бекапчики" (разносные, промежуточные- назовите их как хочется),

И таких баз МНОГО, слишком.

...
Место на диске не резиновое.
24. ADirks 182 09.10.19 15:56 Сейчас в теме
(14) Да я и не настаиваю на применении скриптов от Оле, но посмотреть, как делают настоящие DBA, всё же рекомендую.
Я на собственном опыте убедился, что лучше всю логику бэкапов (да и вообще всех регламентов) реализовывать на T-SQL, и не рисовать хитрых схем в планах обслуживания. Особенно это чувствуешь, когда приходится переезжать на другой сервер, и вот тогда настаёт беда бедовая... Особенно учитывая, что от версии к версии всё ощутимо меняется, и каждый раз изобретать эти схемы заново - это такое себе занятие.
И ещё полезно завести какие-нибудь таблички, где будут храниться все нужные результаты работ по бэкапу, типа, где что лежит, когда был последний успешный полный бэкап, всякие размеры, и т.п. Обычно их в msdb создают.

(11) И вот собственно, чтобы этого не делать, и стоит вынести весь код в sp-шку (или несколько sp-шек), и в джобах вызывать их с нужными параметрами. Таким образом, вместо кучи кода в каждом джобе будет всего несколько строчек вида exec dbo.sp_backub(...)
25. ADirks 182 09.10.19 16:03 Сейчас в теме
+ (24) кстати, я тоже писал своих скриптов для бэкапа, можно для примера взглянуть. Они сильно проще, чем у Оле.
http://forum.infostart.ru/forum86/topic80114/message1312442/#message1312442
26. DrZombi 116 09.10.19 16:09 Сейчас в теме
19. DrZombi 116 09.10.19 14:29 Сейчас в теме
(13) А еще есть люди, которые делаю себе резервные копии, их примерно 3 экземпляра, таких кадров.

И один из них может забыть про галочку "Только копия", и в итоге ваш скрипт должен как-то понять, что не сделано полное бекапирование...

Ведь вы понимаете, что промежуточную копию можно развернуть, только если у вас есть полный бекап исходной копии :)
32. GreenDragon 11.10.19 10:35 Сейчас в теме
(4) Внимание вопрос - зачем вам схема FULL, если в итоге вы журнал не бекапите, а просто обрезаете его? Удивлён, что в комментариях никто этого не спросил.
33. DrZombi 116 11.10.19 11:09 Сейчас в теме
(32) Затем, что обрезание его делается, при ПОЛНОМ бекапировании РАЗ в ГОД, МЕСЯЦ, Неделю... Вы бы хоть обратили внимание на детали :)

Баз много, вариантов тоже, прописывать еще и индивидуальную структуру для каждого плана (а их ~20), я не очень рад.
Хоть где то должно быть однообразие...
34. GreenDragon 11.10.19 12:06 Сейчас в теме
(33) Вопрос не "когда", а "зачем". Это два разных вопроса. Добавьте ОДИН план обслуживания, который будет запускаться раз в полчаса, бекапить ВСЕ журналы и сразу их удалять. Это если кто-то там у вас упарывается по полной схеме восстановления. Этот вопрос мусолят уже не первый год - и тут, и на сторонних ресурсах. Каждый год появляется человек, в статье которого присутствует - "...и делаем truncate журнала", что порождает очередную волну спича на несколько страниц. Усвойте уже, что вариантов два - "Схема FULL и бекап журналов", либо "Схема SIMPLE и никаких восстановлений вне точек бекапов полных и разностных, но зато без бекапов журналов".
Полное бекапирование не имеет НИКАКОГО отношения к схеме восстановления.
Прикрепленные файлы:
36. DrZombi 116 11.10.19 12:51 Сейчас в теме
(34) Предположите, что я не Администратор БД, Нет Тот, кто следит за базами, бекапами и вообще человек далекий от железа.
Каждая настройка в этой статье это всего лишь знакомство с планом обслуживания за 8-часов, используя гугл. (без вопросов на форумах)

Я решил, что кому-то будет любопытно ознакомится со скриптами, запросами, о том, что не все в планах обслуживания так радужно, как кажется.
ДА, можно просто взять и все написать одним блоком, Скриптом, без ваших блоков, и схем.

...Я просто программист, мне не трудно, но мне любопытно было сделать именно так, как видели в статье....
(Если вы приводите свою схемы, поделись с людьми скриптами...)

...По поводу Журнала, кто вам сказал, что мне не нужны часовые копии?...
...Я просто до этого еще не добрался...
...Будет время доберусь, а нет, то нет...
...Как я писал, ходить по своим граблям удел каждого, и грабли у каждого свои... :)
GreenDragon; +1 Ответить
38. GreenDragon 11.10.19 13:08 Сейчас в теме
(36) Я не против! Статья хорошая. Некоторые моменты мне были очень интересно - с удовольствием переделаю свой план. И не только мне, судя по 23 звёздочкам.

По-поводу журнала - делайте с необходимым промежутком. Нужны часовые - делайте часовые. Нужны минутные - делайте минутные. И храните всё это, пока это требуется. Я просто обратил ваше внимание на ненужность шага, связанного с переводом баз в simple режим и обратно лишь для того, чтобы обрезать журнал.
39. DrZombi 116 11.10.19 13:09 Сейчас в теме
(38) Я еще не решил для себя, просто не решил ;)
35. GreenDragon 11.10.19 12:12 Сейчас в теме
(33) скрипт бекапирования ОДИН. В нём определяется необходимость полного или разностного бекапа. Баз можно добавлять любое количество - хоть 20, хоть 200.
37. DrZombi 116 11.10.19 13:08 Сейчас в теме
(35) При использовании одного плана состоящего из нескольких блоков, где выбирается 20-ть баз... Происходит следующее...
1. Ваш блок , каждый блок в плане, будет обрабатывать ВСЕ 20-ть баз.
2. Он не перейдет в следующий блок, пока не наиграется с БАЗАМИ!!!!...
3. Карл, если одна база в ауте, то все базы пойдут по этому маршруту, и бекапов вы не увидите вовсе.
4. Вы теряете прелесть от параллельного резервирования, когда Сервер загружается по самые уши бекапированием :)
40. GreenDragon 11.10.19 13:17 Сейчас в теме
(37) Мне показалось, что вы как раз сетовали на то, что хотели сделать один универсальный план. Делайте по плану на базу, если всё-таки вопрос не в этом.
Про один блок я писал, так как на скрине у вас два блока бекапирования.
Прикрепленные файлы:
42. DrZombi 116 11.10.19 13:46 Сейчас в теме
(40) Таки и сделал, Структура плана Одна. И состоит из одного количества блоков. С одинаковой структурой.
Просто блоки настроены по разному. (это только пример, возможность посмотреть, как у соседа настроено, сделать может так же, а возможно лучше)
5. capitan 1622 08.10.19 16:43 Сейчас в теме
6. DrZombi 116 09.10.19 06:40 Сейчас в теме
(5) Спасибо, добрый молодец :)
9. v.krivenko 43 09.10.19 09:59 Сейчас в теме
(0) в пункте 6 можно сделать без предварительного определения id базы:
use <база>;
DECLARE @DB_ID int;
SET @DB_ID = DB_ID();
DBCC FLUSHPROCINDB(@DB_ID)
12. DrZombi 116 09.10.19 11:05 Сейчас в теме
10. BackinSoda 09.10.19 10:03 Сейчас в теме
Спасибо за статью. Жаль, что для каждой базы отдельный план надо копировать
зы: То чувство, когда в твоём плане обслуживания только резервная копия и очистка старых
11. DrZombi 116 09.10.19 11:05 Сейчас в теме
(10) SQL разработчики не балуют...
Можно копировать блоки из одного плана в другой, конечно не айс, но хоть что-то, чем вообще нечего :)
15. qwed557 30 09.10.19 14:15 Сейчас в теме
Оповещение надо делать не только при сбое, если у вас не запустится задание и ничего не выполнится, вы об этом ничего не узнаете. Нужно выполнять оповещение после каждого успешного выполнения и если оповещения нет, то нужно выяснять причины.
16. DrZombi 116 09.10.19 14:23 Сейчас в теме
(15) Таки было сделано, поняв, что это БРЕД... сделал только прием ошибок, критических :)
17. DrZombi 116 09.10.19 14:25 Сейчас в теме
(15) Проблемой с почтой, уже решает другой человек. И если почтовик не отправит, то это уже будет его проблема :)
18. qwed557 30 09.10.19 14:28 Сейчас в теме
(17) при чем тут почта? А вообще так и работаем да, без разницы что там происходит, выполняется задание , не выполняется, почта не пришла не я виноват, спрашивайте вон у того чувака
20. DrZombi 116 09.10.19 14:31 Сейчас в теме
(18) При том, что когда у вас по работе около 300 писем прилетает за сутки, вы среди мусора, нечего не разберете.
Да и место у почтовика не резиновое...

...в общем на баловался я с сообщениями, и получать все сообщения, это БРЕД... некому ваши успешные бекапы ненужны :)
21. DrZombi 116 09.10.19 14:34 Сейчас в теме
(18) Если начнут разбирать, у меня будет аргумент, что почтовая программа не работает, из-за того, что учетка была заблокирована и сообщения от SQL сервера не поступали.

Есть вариант, что у организации ограниченное пространство для почтового ящика.
Вы батенько, почту будете всегда очищать от спама?
Вам вот кроме как читать мертвую почту про успешные бекапы, нечем заняться? :)
22. Rans 6 09.10.19 15:01 Сейчас в теме
(21) Есть такая проблема. В идеале хотелось бы видеть какую-то табличку со светофором по списку бэкапов. Но как ее сделать пока нет ни малейшего понятия.
23. DrZombi 116 09.10.19 15:37 Сейчас в теме
(22) Если только хранить такие данные отдельно в какой либо БД, которую ты добавишь.
А уже в какой либо програмулинке её выводить во всей красе, хоть в 1С ;)
27. asved.ru 35 10.10.19 09:07 Сейчас в теме
После решения от Ola Hallengren все остальное - велосипеды, где вместо педаль - грабли.
28. DrZombi 116 10.10.19 11:44 Сейчас в теме
(27) Вот посмотрел бы я на ваши весла из граблей, когда для бекапов, вместо 100 терабай, вам дадут 15, и вертись как хочешь... со словами "не в чем себе не отказывай" :)
29. Mortum 10.10.19 14:29 Сейчас в теме
(28) а в чём проблема почитать инструкцию к скриптам от Ola Hallengren и настроить так чтобы влезать в объём? В любом варианте используются одинаковые команды и возможности SQL Server. Там есть всё необходимое, включая удаление старых бэкапов.
P.S.: за регламентное сжатие журнала транзакции и неанглийский интерфейс в приличном обществе пинают в живот.
30. DrZombi 116 10.10.19 15:23 Сейчас в теме
(29) Интерфейс нормальный, перевод действительно бредовый, но какой есть.
Не в Ola Hallengren дело... мужик он толковый, но мне нужен мой мопед, с моими правилами. И его самокат мне не подходит :)

А то что журнал режу, таки он в моем случае рудиментарное творение, у нас свободный мир, вы готовы кушать кактус и удалять бекапы ежедневно, из-за нехватки места.
Я предпочитаю выстроить максимально автоматизированное архивирование, хотя бы на пару лет. ;)
31. LD_2006 11.10.19 09:25 Сейчас в теме
41. GreenDragon 11.10.19 13:44 Сейчас в теме
declare @datenow datetime = getdate()
declare @DayOfMonth int
declare @DayOfWeek int
declare @FullType bit
declare @FullName varchar(1000)
declare @Name varchar(500)
declare @backupSetId as int

set @Name = CAST(YEAR(getdate()) as varchar) + 
		RIGHT('0' + cast(MONTH(getdate()) as varchar), 2)+
		RIGHT('0' + cast(DAY(getdate()) as varchar), 2)+
		RIGHT('0' + cast(datepart(HOUR, getdate()) as varchar), 2) + 
		RIGHT('0' + cast(datepart(MINUTE, getdate()) as varchar), 2) + 
		RIGHT('0' + cast(datepart(SECOND, getdate()) as varchar), 2)
set @DayOfMonth = datepart(day, @datenow)
set @DayOfWeek = DATEPART(weekday, @datenow)
if @DayOfMonth = 1 or @DayOfWeek = 1
	begin
		set @Name = N'MainBaseOfAllUniverse_backup_FULL_' + @Name
		set @FullName = @FullPath + @Name + N'.bak'
		BACKUP DATABASE [MainBaseOfAllUniverse] TO  DISK = @FullName WITH NOFORMAT, NOINIT,  NAME = @Name, SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10
	end
else
	begin
		set @Name = N'MainBaseOfAllUniverse_backup_FULL_' + @Name
		set @FullName = @FullPath + @Name + N'.bak'
		BACKUP DATABASE [MainBaseOfAllUniverse] TO  DISK = @FullName WITH DIFFERENTIAL, NOFORMAT, NOINIT,  NAME = @Name, SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10
	end
Показать

Примерно так. Фулл бекап на первый день месяца или недели, дифференциальный - в остальные
43. DrZombi 116 11.10.19 13:49 Сейчас в теме
(41) А вы не проверяете на "RESTORE VERIFYONLY" ?
Меня тут вчера диск подвел, было интересно понять, что все же проверять, то что записано полезно :)
44. GreenDragon 11.10.19 13:50 Сейчас в теме
(43) Конечно. Я просто в этот кусочек не скопипастил. С raiserror и уведомлением.
45. DrZombi 116 11.10.19 13:52 Сейчас в теме
(44) По хорошему, лучше вообще все в один блок написать, SQL это позволяет :)
Что бы не загромождать скрипт, можно часть вытащить в глобальные функции.
46. GreenDragon 11.10.19 13:52 Сейчас в теме
(43) И ещё вот с этим -
sel ect @backupSetId = position fr om msdb..backupset where database_name=N'Базюка' and backup_set_id=(select max(backup_set_id) fr om msdb..backupset wh ere database_name=N'Базюка' )
if @backupSetId is null
begin
raiserror(... и дальше генерация сирен, мигалок и солдат с собаками
47. DrZombi 116 11.10.19 13:53 Сейчас в теме
(46) Тут как то я решил, что лог пишется на ходу, был разочарован, лог появляется после окончательного выполнения плана :)
48. Дмитрий74Чел 189 25.10.19 14:59 Сейчас в теме
Неискушенным в данных вопросах: проходите мимо статьи. Сильно на любителя. Свой велосипед.
49. DrZombi 116 28.10.19 07:45 Сейчас в теме
(48) Куда мимо? Не нравится? Чем? Что, тупо просто? Запросы сложные? (Рекомендую изучить SQL запросы)
Это рабочий вариант, как сделал я.

Может кому пригодится, может кто решит, модифицировать.
Может кто посмотрит и купит нормальное ПО (дорогое) и будет делать бекапы через него.
Статья ничем не обязывает и не говорит, что это эталон и другие дураки. НЕТ, статья о том, что можно так, но всегда есть лучше. Я предлагаю выбор.

А вы что предлагаете, прочесть ваш пост и что дальше? Вы не дали ни ссылки, не рекомендаций, что типо у вас лучше. Ни решения, ни ответа, ни совета. :)
Оставьте свое сообщение

См. также

Обмен каталогом товаров между 1С и другими системами в формате YML (Yandex Market Language) Промо

Обмен через XML WEB Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 УТ10 УНФ УТ11 Платные (руб)

Обработка для выгрузки/загрузки каталога номенклатуры в 1С из формата YML (Yandex Market Format). В настоящий момент поддерживается выгрузка в YML из УТ11 и УТ10. Загрузки из YML в УТ11, УТ10 и УНФ 1.6. Обработки тестировалась на конфигурациях УТ 11.3.1.115 (управляемые формы), УНФ 1.6.9.36 (управляемые формы) и УТ 10.3.32.2 (обычные формы). Обращайтесь по вопросом адаптации обработки под другие конфигурации. Обработка предоставляется с открытым кодом. Кроме того, будет осуществляться развитие проекта. Выпускаемые обновления будут распространяться среди покупателей БЕСПЛАТНО в течение 1 года с момента покупки. Обратите внимание, что при чтении YML-файлов большого размера может происходить увеличение размера временных файлов 1С. Поэтому для быстрого чтения объемных файлов необходимо иметь соответствующей мощности ПК. Если есть потребность быстро загружать объемные файл рекомендуется использовать сервера, а не обычные ПК.

4900 руб.

18.05.2015    62895    108    48    

5 причин 1С-нику участвовать в хакатонах

Личная эффективность Бесплатно (free)

5 причин, зачем вам ходить на хакатоны, почему на это стоит выделять время.

24.05.2020    3684    0    comol    19    

Перенос данных из УНФ 1.6 в БП 3.0

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УНФ БП3.0 Россия БУ УУ Платные (руб)

Обработка для переноса документов, начальных остатков и справочной информации. Можно использовать как для разового начального переноса данных, так и для организации регулярного обмена данными. Есть возможность указать период отбора данных и установить фильтр по организациям. Перенос оперативно обновляем при выходе новых релизов программ 1С. По возникающим вопросам оказываем техническую поддержку (через тикеты на Инфостарте).

15000 руб.

18.05.2020    789    0    0    

Перенос данных из ERP 2 / КА 2 / УТ 11 в УНФ 1.6

Обмен данными 1С Перенос данных из 1C8 в 1C8 v8 УНФ ERP2 УТ11 КА2 Россия Платные (руб)

Обработка позволяет выполнить полный перенос данных из программ 1С:ERP / КА 2 / УТ 11 в программу 1С:УНФ. Переносятся начальные остатки на выбранную дату, документы за период, а также справочная информация. Переносятся все возможные виды документов. Оказываем техническую поддержку. Оперативно обновляем правила конвертации данных при выходе новых релизов программ 1С.

15000 руб.

28.04.2020    1096    0    2    

Распознавание документов в "1С:Предприятие 8.3": расширение для типовых конфигураций. Промо

Обработка справочников Внешние источники данных Управление персоналом (HRM) Управление персоналом (HRM) v8 1cv8.cf Платные (руб)

Расширение для типовых конфигурация и для самостоятельной интеграции системы распознавания документо удостоверяющих личность и прочих документов непосредственно из информационных баз "1С:Предприятия 8.3". Расширение позволит не изменять типовой код конфигурации, расширить текущий функционал несколькими кликами мыши.

5000 руб.

26.01.2016    46602    59    0    

Автозагрузка банковских выписок (БП 3.0)

Банковские операции Обмен с банком v8 v8::БУ БП3.0 БУ Абонемент ($m)

Расширение позволяет автоматизировать загрузку банковских выписок в программу 1С:Бухгалтерия предприятия, ред. 3.0. При начальной настройке создается регламентное задание. Период срабатывания регламентного задания в дальнейшем можно поменять в консоли заданий. Требуется указать каталог, из которого нужно загружать банковские выписки.

1 стартмани

06.04.2020    1964    3    primat    3    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    9685    0    informa1555    21    

Печать текстовых водяных знаков в файлы PDF из 1С

Универсальные обработки v8 1cv8.cf Абонемент ($m)

Обработка для группового наложения текстовых водяных знаков в документах PDF с помощью бесплатной программы AVS Document Converter. Тестировалась в ОС Windows 7 64 bit на платформе 8.3.15.1830 с AVS Document Converter 4.2.3.268.

2 стартмани

13.03.2020    865    3    Spartan    8    

АСТ: Обмен с ЕГАИС из 1С Промо

Внешние источники данных Обработка справочников Обработка документов Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 КА1 БП2.0 УТ10 Розница УПП1 УНФ ERP2 БП1.6 БП3.0 УТ11 КА2 Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Пищевая промышленность Россия БУ УУ Акцизы Платные (руб)

Автоматический обмен данными с системой ЕГАИС из 1С: загрузка данных по контрагентам, производителям, алкогольной продукции, сопоставление данных и запись их в базу данных; загрузка ТТН и справок Б от поставщиков, отправка по ним актов; выгрузка ТТН покупателям; запрос остатков. Выгрузка производства, импорта, работа с торговым залом, помарочный учет. Запрос остатков и движения по справке Б, работа с марками и штрихкодами продукции. Запрос статуса ТТН, необработанных ТТН, отправка данных АСИиУ. Работа с актами расхождений и запросами на отмену актов.

4000 руб.

30.09.2015    271132    652    790    

Полиграфистки сходят с ума по одной

О жизни Бесплатно (free)

Мой опыт прохождения полиграфа.

06.03.2020    4552    0    1c-intelligence    78    

Перенос документов, остатков и справочников из УНФ 1.6 в УТ 11 / КА 2 / ERP 2 (ЕРП 2)

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 v8 УНФ ERP2 УТ11 КА2 Россия Платные (руб)

Правила переноса данных из УНФ в УТ 11 / КА 2 / ERP 2 (ЕРП 2) позволяют перенести начальные остатки на выбранную дату, а также документы за период, начиная с этой даты. Это позволит комфортно начать ведение учета в новой программе 1С. Предоставляем техническую поддержку, оперативно обновляем перенос при выходе новых релизов программ 1С. Добавляем новые виды объектов в переноса по просьбам наших клиентов.

12125 руб.

05.12.2019    4268    4    7    

Универсальное выборочное удаление данных из базы 1С (любые конфигурации на упр.формах: БП 3.0, УТ 11, КА 2, ERP, УНФ, ЗУП 3, Розница и т.д.)

Чистка базы Универсальные обработки v8 v8::УФ Розница УНФ ERP2 ЗКГУ3.0 БП3.0 УТ11 КА2 ЗУП3.x Платные (руб)

Обработка позволяет удобно выборочно удалить данные из базы 1С. Это могут быть как неиспользуемые элементы справочников, так и неактуальные организации. При этом есть возможность провести анализ пересечений документов с другими организациями и таким образом уберечься от того, что при удалении обороты по другой организации изменятся.

3000 руб.

28.11.2019    3674    10    7    

Скачивание котировок акций и фьючерсов с сайта "Финам" Промо

Универсальные обработки WEB Финансовые услуги, инвестиции УУ Платные (руб)

Скачивание котировок акций и фьючерсов с сайта "Финам" с удобными настройками и отборами. Можно выбрать любой, даже самый большой период времени. Есть возможность сохранения в отдельные файлы данных по ценам за каждый день.

4950 руб.

07.10.2015    18514    1    4    

Стабильность превыше всего

Рефакторинг и качество кода v8 Бесплатно (free)

Странная заметка о поддержании стабильности в условиях интенсивного изменения конфигурации.

07.11.2019    8642    0    YPermitin    40    

6 шотов

О жизни Бесплатно (free)

Небольшие пятничные истории о взаимоотношениях в коллективе

01.11.2019    9187    0    sapervodichka    28    

Шорты Белокаменцева

О жизни Бесплатно (free)

Короткие версии старых статей

28.10.2019    7323    0    1c-intelligence    18    

Конфигурация "Весовая" ред. 3.0 для Платформы 8.3 Промо

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Управленческий учет (прочее) v8 Транспорт, автопарки, такси Беларусь Украина Россия Казахстан УУ Платные (руб)

Конфигурация "Весовая" ред. 3.0 для "1С:Предприятие 8.3" - это решение для организации контроля движения грузов через весовую и остатков на складах предприятий, занимающихся: - сельскохозяйственной деятельностью; - тепличных комплексов; - добывающей и горнодобывающей деятельностью; - производителей бетона и асфальта; - дорожно ремонтно-строительных управлений; - торговых организаций; - речных и морских портов осуществляющих перевалку груза; - и организаций, использующих весовую. Конфигурация реализована полностью в интерфейсе "Такси".

3000 руб.

24.03.2015    67730    85    59    

Перенос данных из Управление торговлей 10.3 в Бухгалтерию предприятия 3.0 (правила переноса остатков, документов и справочников из УТ 10.3 в БП 3.0)

Обмен через XML Перенос данных из 1C8 в 1C8 v8 УТ10 БП3.0 Россия БУ УУ Платные (руб)

Правила переноса остатков, документов и справочников из УТ 10.в БП 3.0 позволяют как начать вести учет в новой базе БП 3.0, так и организовать регулярный обмен данными, вводимыми на стороне УТ 10.3. Перенос оперативно обновляем на новый релизы, предоставляем техническую поддержку. Возможно бесплатное выполнение тестового переноса данных перед приобретением нашей разработки.

10000 руб.

02.10.2019    4537    2    8    

Видя деньги

О жизни Бесплатно (free)

Немножко бизнес-программирования.

09.09.2019    7567    0    1c-intelligence    94    

Куда и как расти

Личная эффективность Бесплатно (free)

Даже если сейчас у вас стабильная работа, это не означает, что завтра ситуация не изменится, вы не окажетесь на рынке труда в поисках новой должности. Какие специалисты сейчас требуются, и какие тренды превалируют на рынке IT и в сфере 1С, на конференции рассказал директор по развитию внедренческого центра «Раздолье» Андрей Мироненко. Он работает в качестве руководителя IT-направления свыше 15 лет, а в должности директора IT – 10 лет. Является автором различных обзоров, курсов и иных полезных материалов. Занимался подбором и мотивацией персонала, разработкой стандартов качества IT-сервисов, руководством проектами автоматизации (ERP, WMS и пр), имеет опыт организации розничных сетей, call-центров, запуска и сопровождения интернет-магазинов.

16.05.2019    10964    0    andironenko    26    

Adaptersoft : Управление Сбором Данных. Получение сводной отчетности в базе 1С из однотипных файлов Excel Промо

Загрузка и выгрузка в Excel Управление холдингом (CPM) Управление холдингом (CPM) v8 УУ Платные (руб)

Управление Сбором Данных — конфигурация на 1С 8.2 для получения сводной отчетности в базе 1С из однотипных файлов Excel. Отлично подходит для организации оперативного или управленческого учета. Сочетает в себе гибкость ms Excel с защищенностью данных в 1С. Простая, понятная и доступная система в отличие от 1С:Консолидации или 1С:Свод отчетов.

15000 руб.

25.09.2014    19914    2    8    

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Практический кейс построения HTTP-сервиса, который работает по принципу HTTP-сервера, с разбором всех методов построения и разработки класса задач построения личных кабинетов и сопряжения их с центральной базой.

1 стартмани

13.05.2019    25514    115    Diversus    42    

Удаленная работа. Как выбрать работодателя

Личная эффективность Бесплатно (free)

На что обратить внимание при выборе удаленного работодателя

15.11.2018    11328    0    sergey_garin    24    

В гости к отцу

О жизни Бесплатно (free)

Про старых и новых инженеров.

14.11.2018    7253    0    1c-intelligence    34    

Перенос данных из БП 3.0 в УПП 1.3 Промо

Обмен данными 1С Обмен через XML Перенос данных из 1C8 в 1C8 v8 УПП1 БП3.0 Россия Платные (руб)

Поддерживается перенос документов и справочной информации. Есть возможность указать период отбора данных и установить фильтр по организациям. Перенос оперативно обновляем при выходе новых релизов программ 1С. По возникающим вопросам оказываем техническую поддержку (через тикеты на Инфостарте).

12125 руб.

06.05.2020    1105    1    1    

Контроль отрицательных остатков в конфигурациях: УТ 11.4, КА 2.4, ЕРП 2.4

Бухгалтерский учет Учет ТМЦ Управленческий учет (прочее) Учет ТМЦ v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free)

Подробный разбор всех присутствующих в конфигурациях УТ 11, КА 2, ЕРП 2 вариантов контроля отрицательных остатков: по организациям, складам, оперативный контроль

08.11.2018    46324    0    ids79    73    

О главном инструменте разработчика, аналитика и руководителя

Личная эффективность Бесплатно (free)

Думаю, все были на собеседованиях и на вопрос «какие инструменты вы используете в работе», у всех заготовлен ответ про языки, библиотеки, среды разработки, базы данных и т.д. и т.п. В крайнем случае, у кого-то может быть припасена шутка про грабли и напильник. Ну и все доблестно перечисляют всякие XDTO и СКД, думая, что перечисляют невероятно важные средства разработки, в которых хорошо разбираются. Но правда заключается в том, что единственно важным средством разработки является ваш мозг. И вы абсолютно ничего не знаете о том, как он устроен.

10.08.2018    10594    0    m-rv    40    

Способы оптимизации переносов данных

Перенос данных из 1C8 в 1C8 Интеграция v8 КД Абонемент ($m)

Хочу рассказать вам про способы оптимизации разработки правил обмена в программе «Конвертация данных» второй редакции. Казалось бы, про эту программу и разработку в ней правил конвертации уже сказано все, что можно. Появились уже более современные и быстрые технологии. Почему же все еще она? Дело в том, что «Конвертация данных» второй редакции все еще актуальна для огромного круга задач. Она имеет очень широкую функциональность и позволяет реализовывать сложные алгоритмы. Годы идут, а люди продолжают ей пользоваться и у них возникает много вопросов по этой программе. Возможно, в будущем вы тоже будете заниматься такими проектами и столкнетесь с задачами, похожими на те, про которые я собираюсь рассказать. Мне хочется вам в этом помочь.

1 стартмани

02.08.2018    15660    11    primat    7    

Перенос данных из КА 1.1 в КА 2 / УТ 11 Промо

Обмен через XML Перенос данных из 1C8 в 1C8 v8 КА1 УТ11 КА2 Платные (руб)

Комплексную автоматизацию для ведения учета обычно выбирают компании среднего и крупного размера, которые не хотят связываться с обменами. При этом в одной программе необходим функционал бухгалтерии, зарплаты и торговли. Комплексная автоматизация 2 решает эту задачу и содержит самые современные разработки фирмы 1С. Программа хорошо отлажена и проверена на учете реальных организаций, потому что разработана на основе проверенных временем УТ 11 и ERP 2. Типовая обработка перехода с Комплексной автоматизации редакции 1.1 на Комплексную автоматизацию редакции 2 не переносит документы. Для переноса документов, начальных остатков и справочной информации можете воспользоваться предлагаемой разработкой (правила конвертации данных из КА 1.1 в КА 2 / УТ 11). При покупке предоставляю поддержку, оперативно исправляю ошибки, рассылаю обновления при выходе новых релизов.

37125 руб.

04.12.2015    130340    349    286    

Минимализмы 3

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    43884    0    ildarovich    45    

А чё это вы здесь делаете, а?

WEB v8 1cv8.cf Абонемент ($m)

Разработчикам тиражных обработок близка и понятна проблема обратной связи с пользователем. Много важного и полезного можно почерпнуть, зная, что делает бухгалтер, который запустил обработку. В большом мире вэба сбор статистики на сайте дело привычное и даже обязательное. Эта статья покажет практику применения инструментов сбора статистики из мира веба для обработок на платформе 1С:Предприятие.

1 стартмани

21.01.2018    22246    30    infosoft-v    42    

Одно Кольцо, Чтобы Править Всеми

Личная эффективность Бесплатно (free)

Рассказ о внедрении 1С. Необычный.

25.12.2017    14853    0    1c-intelligence    62    

DT:Менеджер 8.2 (8.3) (Распаковка/упаковка *.DT файлов. Быстрый экспорт CF. Сброс пользователей. Работа с "битыми" DT) Промо

Сервисные утилиты Инструментарий разработчика Администрирование данных 1С v8 1cv8.cf Платные (руб)

Внешнее приложение для работы с форматом *.DT. Осуществляет быстрый экспорт конфигурации, очистку сведений о пользователях и может работать с аварийными DT файлами.

6000 руб.

19.04.2013    122356    200    215    

Джеб Кличко

Личная эффективность Бесплатно (free)

Бывает же такое: 1Сник может учиться у Кличко

18.12.2017    16094    0    1c-intelligence    63    

Латентные паразиты

Управление бизнес-процессами (BPM) Бесплатно (free)

Вот вы сидите, и не думаете о паразитах. А они рядом.

04.12.2017    25523    0    1c-intelligence    144    

Комплект увольнения

О жизни Бесплатно (free)

Это все, что останется после меня. Это все, что возьму я с собой.

28.11.2017    26519    0    1c-intelligence    87    

Алкогольная декларация для 1С 8.2, 8.3 (3, 4, 5, 6, 7, 8, 10, 11, 12 формы) УТ11, БП3.0, БП КОРП 3.0, Розница 2, с подписью и шифрованием, Управляемые формы Промо

Регламентированная отчетность Статистики Бухгалтерские Оптовая торговля Розничная торговля Оптовая торговля Розничная торговля v8 v8::УФ Розница БП3.0 УТ11 Россия БУ УУ Акцизы Платные (руб)

Не успеваете сдать декларацию вовремя? Устали заносить/править данные вручную? Давит угроза штрафа в десятки, а то и сотни тысяч? Бессонные ночи и потраченные на работе вечера в пик сдачи отчетности? Вам знакомы эти проблемы? Если да, то у нас есть РЕШЕНИЕ, которое Вам необходимо! Автоматическое заполнение алкогольных деклараций по формам 3 (производство), 4 (использование), 5, 6, 7 (опт), 8 (перевозка), 11, 12 (розница, разделы I и II) по данным учета, проверка и шифрование, а также загрузка из внешних файлов и выгрузка в формате XML 4.30 согласно приказу Росалкогольрегулирования №198 от 05.08.2013 г.

20000 руб.

01.07.2013    89878    72    83    

Суррогаты

О жизни Бесплатно (free)

Статья о том, что вы и без меня прекрасно знаете. Но я напомню.

21.11.2017    28373    0    1c-intelligence    197    

Простой способ повысить шансы на победу, переговоры без поражения. Тонкое искусство переговоров для специалистов по 1С и не только. Часть 2

Личная эффективность Бесплатно (free)

После своей предыдущей публикации https://infostart.ru/public/690718/ получил много сообщений с вопросами. Один из наиболее часто повторяющихся – о том, как повысить шансы на победу в сложных переговорах, если этому никогда не учился? Конечно, от это вопроса веет верой в Гарри Поттера и его волшебную палочку, но мы точно знаем, что правильный ответ есть. Используйте принцип «всегда вдвоем». Это одна из самых простых и самых сильных манипуляций в переговорах.

07.11.2017    10212    0    user809424    17    

Кошка сдохла, хвост облез

Личная эффективность Бесплатно (free)

Практический прием для руководителя из арсенала системного мышления.

04.11.2017    17319    0    1c-intelligence    44    

Подсистема "Инструменты разработчика" v5.35 Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Интегрированный набор инструментов разработчика: - консоль кода - консоль запросов - консоль построителя отчетов - консоль компоновки данных - консоль заданий - конструктор запроса - справочник алгоритмов - исследователь объектов - интерфейсная панель - настройка журнала регистрации - анализ журнала регистрации - настройка техножурнала - анализ техножурнала - подбор и обработка объектов - редактор объекта БД - редактор констант - редактор параметров сеанса - редактор изменений по плану обмена - редактор пользователей - редактор предопределенных - редактор хранилищ настроек - динамический список - поиск дублей и замена ссылок - контекстная подсказка - синтакс-помощник - поиск битых ссылок - поиск ссылок на объект - структура хранения БД - удаление объектов с контролем ссылок - и прочее

23.09.2007    476163    4340    tormozit    2665    

Экзорцизм программистскими методами

О жизни Бесплатно (free)

Примеры из жизни о том, как инструменты на платформе 1С помогают компании изгонять зло.

24.08.2017    33044    0    1c-intelligence    59    

Рассылка СМС-сообщений через сервис SMS.ru

SMS рассылки v8 1cv8.cf Россия Абонемент ($m)

Простая конфигурация, позволяющая быстро организовать смс-рассылку через интернет-сервис SMS.ru. Конфигурация собрана на платформе 1С:Предприятие 8.3 (8.3.8.2088), механизм взаимодействия с внешним сервисом - http запросы.

1 стартмани

20.08.2017    11187    43    sdn-1    0    

Агрессия в переговорах

Личная эффективность Бесплатно (free)

Многие люди сравнивают агрессию с отсутствием такта и невоспитанностью либо с плохим настроением. И мало кто задумывается, что она может стать помощником, особенно когда идет речь о сотрудничестве или переговорах с партнерами. Чем может быть полезна агрессия и как правильно ею пользоваться, рассказывает бизнес-тренер, руководитель Петербургской школы переговорщиков «ШИП» Дмитрий Коткин.

08.08.2017    12166    0    user809424    45    

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    57871    0    user700211_a.straltsou    27    

Умный дом на 1С + ардуино

Практика программирования v8 Абонемент ($m)

Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.

1 стартмани

07.08.2017    20695    20    sasha777666    62    

Как я стал одинэсником и переехал из провинции в Москву

О жизни Россия Бесплатно (free)

История покорения Москвы.

29.07.2017    16629    0    DmitryKSL    132    

Применение Agile-технологий в проектах 1С

Управление проектом Бесплатно (free)

Agile – это одна из методик ведения проектов. О ее практическом применении в проектах 1С пойдет речь в статье.

25.07.2017    17150    0    kondrat230386    35    

[Простые маршруты]. Работа с картой. Геозоны. Расчет оптимальных вариантов доставки Промо

Рабочее место Универсальные обработки Оптовая торговля Оптовая торговля v8 1cv8.cf Оптовая торговля, дистрибуция, логистика УУ Платные (руб)

Универсальное решение для любых конфигураций по отображению на карте адреса доставки из любых документов базы данных. Интерактивная работа с картой из 1С и обратно. Широкий набор средств для формирования маршрутов на карте вручную. Ключевая особенность программы – умение математически точными методами автоматически рассчитать и представить на карте разные варианты оптимальных маршрутов: - исходя из заданного количества единиц автотранспорта; - исходя из заданной величины максимальной грузоподъемности автотранспорта.

10000 руб.

08.02.2016    51449    29    1    

Установка подключения к MySQL через ODBC connector

Администрирование данных 1С v8 1cv8.cf Абонемент ($m)

Руководство, облегчающее жизнь при очередной настройке подключения MySQL к 1С через ODBC connector (driver). Оставлю это хотя бы для себя на память :)

1 стартмани

21.07.2017    19282    5    primara    2    

Как создать коммерчески успешное отраслевое решение

Управление проектом Бесплатно (free)

Есть много информации о том, как сделать конфигурацию, как разработать продукт, чем конфигурация отличается от продукта. Но как создать успешное решение, успешный продукт? Ответ на этот вопрос предложен в статье.

06.07.2017    13292    0    kuld    33    

Планы запросов - это просто!

Производительность и оптимизация (HighLoad) v8::Запросы Бесплатно (free)

Наверное, каждый 1С-ник задавался вопросом "что быстрее, соединение или условие в ГДЕ?" или, например, "сделать вложенный запрос или поставить оператор В()"? В данной статье я не дам вам исчерпывающих инструкций по чтению планов запроса. Но я постараюсь объяснить доходчиво - что это такое и с какой стороны к ним подойти.

04.07.2017    37585    0    Evil Beaver    58    

Счет-фактура с 01.07.2017 от 25.05.2017 №625 для ВСЕХ конфигураций 1С 8.х (БП 2.0, БП 2.0 КОРП, БАУ 2.0, БАУ 2.0 КОРП, КА 1.1, ПД 1.0, Розница 1.0, УНФ 1.3, УПП 1.3, УТ 11, УТ 10.3)

Печатные формы документов Оптовая торговля Производство готовой продукции (работ, услуг) Оптовая торговля Производство готовой продукции (работ, услуг) v8 v8::БУ КА1 БП2.0 УТ10 Розница УПП1 УНФ БП3.0 БАУ УТ11 Россия БУ Абонемент ($m)

С июля 2017 года применяется новая печатная форма счет-фактуры в редакции Постановления Правительства РФ от 25.05.2017 № 625. В публикации собраны внешние печатные формы для всех популярных конфигураций 1С. Будет актуально для 90% организаций, которые не ведут учет по гос. контрактам, так как новое поле не заполняется, а вместо номера гос. контракта установлен прочерк по умолчанию.

1 стартмани

29.06.2017    43878    441    a.kapustin    43