Как программно из 1С сделать бэкап базы SQL?

  1. 9 г. назад

    Подскажите пожалуйста, как программно из 1С сделать бэкап базы SQL?

    Ответы: (13)
  2. ADO + t-sql script

  3. пример скрипта можно?

    Ответы: (4)
  4. Пока пишу на VB, потом перепишу в 1С

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")
    
    ConnectionString = "driver={SQL Server}; server=192.168.168.62; uid=sa; Pwd=********"
    objConnection.Open(ConnectionString);
    
    objCommand.ActiveConnection = objConnection
    objCommand.CommandType = 4
    objCommand.CommandText = "BACKUP DATABASE My_Base TO DISK = 'D:\My_Base.Bak'"
    objCommand.Execute
    

    не работает,
    Предполагается наличие окончания инструкции

    Ответы: (4) (6)
  5. (2)(3) открываешь студию, кнопочками и мышкой делаешь бекап или задание. перед выполнением ищешь кнопку "T-SQL" или "create script" :)
    это ленивый путь, без манов

    Ответы: (5)
  6. (4) сама команда у меня уже есть, мне теперь её запустить извне SQL надо

  7. (3)+ точка с запятой затесалась...

    теперь пишет, что не удается загрузить драйвер SQL

  8. 25.12.2014 09:21:45 отредактировано 1Сергей
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")
    
    'ConnectionString = "driver={SQL Server}; server=192.168.1.1; uid=sa; Pwd=********"
    ConnectionString = "Provider=SQLOLEDB.1;Connect Timeout=10000;Data Source=192.168.1.1;User Id=sa;Password=********"
    objConnection.Open(ConnectionString)
    
    objCommand.ActiveConnection = objConnection
    objCommand.CommandType = 1
    objCommand.CommandText = "BACKUP DATABASE My_Container TO DISK = 'D:\My_Container.Bak'"
    objCommand.Execute
    
    msgbox "finish"
    

    Вроде, начинает делать бэкап, но вылетает по таймауту :(

    Ответы: (9) (20)
  9. Ура, заработало!

    objCommand.CommandTimeout = 100000
    
    Ответы: (9)
  10. (7)(8)objCommand.CommandTimeout = 0

    Ответы: (10)
  11. (9) тоже робит, спс

  12. Правильней сделать таск бэкапа на стороне sql. А из 1с просто таск толкнуть на выполнение

  13. просьба как разберетесь - сделать страничку на БЗ

    Ответы: (17) (18)
  14. (0) а чем планировщик виндовый не угодил?

    Ответы: (14)
  15. (13) мне не нужно каждый день, а лишь при определенных условиях быстро забэкапить, потом издеваться над базой

    Ответы: (15)
  16. (14) ок, тогда почему бы просто не стартануть cmd-файл, который уже двинет sql-скрипт?

    Ответы: (16)
  17. (15) мне, как перфекционисту, не нравятся мелькающие черные окна. И, кстати, зачем? Ведь задача уже решена

    Ответы: (17)
  18. (16) тогда (12)

  19. (12) Как это делать?

    Ответы: (19)
  20. (18) создаёшь новый топик, указываешь там галку "включить в БЗ (базу знаний)", ну, и офомляешь мини-статейку, т.е. примерно как на мисте или ИС

  21. (7) вызывай асинхронно, благо ADODB позволяет

  22. Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")

    'ConnectionString = "driver={SQL Server}; server=192.168.1.1; uid=sa; Pwd=********"
    ConnectionString = "Provider=SQLOLEDB.1;Connect Timeout=10000;Data Source=192.168.1.1;User Id=sa;Password=********"
    objConnection.Open(ConnectionString,,,16) ' 16 - adAsyncConnect. Opens the connection asynchronously. The ConnectComplete event may 'be used to determine when the connection is available.

    objCommand.ActiveConnection = objConnection
    objCommand.CommandType = 1
    objCommand.CommandText = "BACKUP DATABASE My_Container TO DISK = 'D:\My_Container.Bak'"
    objCommand.Execute

  23. Когда мне нужно сделать бэкап, я всегда смотрю на http://forum330.com/forum/ . И очень быстро разбираюсь. Там все доходчиво и ясно.

или зарегистрируйтесь чтобы ответить!