Конференция "Базы" » bulk insert теоретически может свалить ms-sql сервер?
 
  • ВладОшин © (31.10.16 12:40) [0]
    в логе
    Hit Fatal Error: Server is terminating
    фатальная ошибка по такому-то spid
    процесс мой..

    там писал и запускал из студии
    DECLARE @bulk_cmd varchar(1000);
    SET @bulk_cmd = 'BULK INSERT #T FROM "\\S1\Try.csv" WITH(CODEPAGE = ''RAW'', FIRSTROW = 1, FIELDTERMINATOR = '';'', ROWTERMINATOR = ''0x0a'')'
    EXEC(@bulk_cmd);
    ну, а остальное вообще бред, всякие update #T и прочее

    если только BULK INSERT свалил (?!)
    но.. как так то!?!

    причем, до этого грузилось, после сбоя рискнул запустить - запустилось.
    файлик килобайт на 20
    да, есть глюк, конечно, одна строка в нем не соответствую формату - но как бы и грузится она криво, но грузится же..
    Ничего не понимаю..
  • ВладОшин © (31.10.16 12:41) [1]
    select @@version

    Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
    Jun 28 2012 08:36:30
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
  • iop © (31.10.16 12:48) [2]
    стомагабайтные и более файлы я гружу более удобным способом

    declare @idoc int, @body varchar(max);
    set @body = :p_xml_body;

    exec sp_xml_preparedocument @idoc OUTPUT, @body;

    insert into dest_table
    (select *
    from OPENXML (@idoc, '//row', 1)
          with (
               field1  int          './@f1',
               .........
               fieldN  varchar(255) '../@fn',
         )
        ) ;
         
    exec sp_xml_removedocument @idoc;

    и под сервер при этом ничего не надо подкладывать
  • ВладОшин © (31.10.16 12:52) [3]
    \\S1\Try.csv - файл там может меняться. Допустим, на момент запуска там была каша, а совсем не csv
    допустим, запись не закончилась, устройство отсоединяли и т.п.

    но как мог BULK INSERT остановить процесс.
    с одной стороны..

    а с другой
    факт: в логе указан spid и код в дампе этого spid, и это тот код, который я запускал..
  • ВладОшин © (31.10.16 12:55) [4]

    > iop ©   (31.10.16 12:48) [2]

    [3] - не ответ вам, просто мысли..

    ваше посмотрю.
    не проблема грузить, проблема с чего бы это рухнуло то
  • ухты_ (31.10.16 15:28) [5]
    под try положить
  • stas © (31.10.16 15:44) [6]
    ВладОшин ©   (31.10.16 12:40)
    Fatal error просто или есть какой-то код ошибки?
  • ВладОшин © (31.10.16 18:36) [7]

    > stas ©   (31.10.16 15:44) [6]

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


    > под try положить

    можно попробовать, но .. как смоделировать то теперь
    да и потом, как-то не вирится. Остановился процесс sql (!), а каким-то try можно защититься?
  • ВладОшин © (02.11.16 13:43) [8]
    кстати, может кто-то проверить, если положить обычный файл csv
    ROWTERMINATOR = '\n'
    (в православном delphi #13#10)

    в excel можно сделать какой-нибудь, любой

    и загрузить его как

    DECLARE @bulk_cmd varchar(1000);
    SET @bulk_cmd = 'BULK INSERT #T FROM "ANY.csv" WITH(CODEPAGE = ''RAW'', FIRSTROW = 1, FIELDTERMINATOR = '';'', ROWTERMINATOR = ''0x0a0x0d'')'
    EXEC(@bulk_cmd);

    именно ''0x0a0x0d''
    в этом смысла нет, но похоже так было написано, и, похоже, именно это свалило.
    свой комп разобрал, не протестирую сейчас, а "промышленный" сервер нет желания валить )
 
Конференция "Базы" » bulk insert теоретически может свалить ms-sql сервер?
Есть новые Нет новых   [118580   +29][b:0][p:0]