Zipping a txt file

Former Member
Former Member $organization

Hi

I'm trying to zip a Text file in SQL but once I run the command, sql keeps executing for long time and I don't get any error.

EXEC master..xp_cmdshell 'T:\Source\WinZip\winzip32.exe T:\Source\sso_pacingdata.zip T:\Source\sso_pacingdata.txt'

I also tried,

EXEC master..xp_cmdshell 'T:\source\WinZip\winzip32.exe -o T:\Source\sso_pacingdata.txt'

Probably my syntax is wrong. Can anyone please let me know the right syntax to Zip a Text file.

Thanks

Varsha

Parents
  • Former Member
    Former Member $organization

    Ben

     

    The total length with full path of @cmd is 129 characters so there I’m safe.

     

    After fixing WINZIP license issue, .Bat files works perfectly on command prompt - \\Dell\Tessitura\Source\Text_Zip_Cmd.Bat

     

    but when I run it in SQL it says “System Can not find the Path specified”

     

    EXEC master..XP_CmdShell '\\Dell\Tessitura\Source\Text_Zip_Cmd.Bat'

     

    In SQL forum I found out that maybe my SQL Server doesn’t have access to C: but I am not sure how to make C Drive accessible to SQL? Zip file is sitting in C:Program Files\Winzip.

     

    Any advise on this?

     

    Thanks

    Varsha

     

     

     

    From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Ben Gu
    Sent: Wednesday, 1 December 2010 4:48 PM
    To: Varsha Karnik
    Subject: RE: [Tessitura Technical Forum] Zipping a txt file

     

    Hi Varsha,

    good day.

    I think the error message maybe have something to do with "Total path and file name length must not exceed 260 characters"

     

    http://www.question-defense.com/2010/10/25/winrar-extract-error-total-path-and-file-name-length-must-not-exceed-260-characters

    the link is about winrar error message.

    how about you map " Normal 0 false false false EN-AU X-NONE X-NONE MicrosoftInternetExplorer4 \\Dell\Tessitura\Source Normal 0 false false false EN-AU X-NONE X-NONE MicrosoftInternetExplorer4 \" to z: drive, create a "a.txt' file.

    and test this:

    declare @cmd varchar(1000)

    set @cmd='"Z:\WinZip\winzip32.exe" -a "Z:\a.zip" "z\a.txt"'
    select @cmd
    EXEC master..xp_cmdshell @cmd

     

     

    have fun

    Ben

     

     

    From: Varsha Karnik <bounce-varshakarnik2805@tessituranetwork.com>
    Sent: 11/30/2010 8:42:32 PM

    Now I get error that “System cannot find the path specified.”

     

    declare @cmd varchar(1000)

     

    set @cmd='"\\Dell\Tessitura\Source\WinZip\winzip32.exe" -a "\\Dell\Tessitura\Source\sso_pacingdata.zip" "\\Dell\Tessitura\Source\sso_pacingdata.txt"'

    select @cmd

    EXEC master..xp_cmdshell @cmd

     

     

    I changed T: drive to full path as I thought it may not recognise drive but still doesn’t work.

     

    Is it permission issue for xp_cmdshell? If so what should I check?

     

    Thanks

    Varsha

     

    From: Tessitura Technical Forum [mailto:forums-technical@tessituranetwork.com] On Behalf Of Ben Gu
    Sent: Wednesday, 1 December 2010 1:18 PM
    To: Varsha Karnik
    Subject: RE: [Tessitura Technical Forum] Zipping a txt file

     

    Hi Varsha,

     

    I agree with Ken, you can test it in cmd windows, and I think you should use option -a not -o too.

    this will work.

    declare @cmd varchar(1000)

    set @cmd='"T:\Source\WinZip\winzip32.exe" -a "T:\Source\sso_pacingdata.zip" "T:\Source\sso_pacingdata.txt"'
    select @cmd
    EXEC master..xp_cmdshell @cmd

     

    have fun

    Ben

     

    From: Ken McSwain <bounce-kenmcswain5454@tessituranetwork.com>
    Sent: 11/30/2010 7:42:32 PM

    But the first  question is – Does this command-line work if you run it from a batch file?

    If it doesn’t, then it’s not a SQL syntax problem, it’s a Winzip syntax problem.

     

    ...and I have a feeling –o is an extraction option code, rather than a compression option code. I’d try –a ( add) as the option code instead.

     

    Ken McSwain Business solutions Manager

    kmcswain@sydneyoperahouse.com

    T+61 2 9250 7876  F+61 2 9251 7821  M 0418 659 360

     

    SYDNEY OPERA HOUSE BENNELONG POINT

    GPO BOX 4274, SYDNEY NSW 2001, AUSTRALIA

    SYDNEYOPERAHOUSE.COM

     

     

    Please consider the environment before printing this email.
     =====This message is intended for the addressee(s) named and may contain confidential information.
     If you are not the intended recipient, please delete it and notify the sender.
     Views expressed in this email are those of the individual sender and are not necessarily the views of the Sydney Opera House Trust=====




    This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!




    This message was sent automatically to you by www.tessituranetwork.com because you subscribed to the Tessitura Technical Forum. You may reply to this message to post to the Technical forum or visit the site to search, read and post to the forums. In the interest of keeping the forum posts from becoming cluttered, we encourage you to delete previous message text from your reply before sending. Thank you!

  • Hi Varsha,

    good day.

    the easiest way to fix the permission issue is using  'Execute as'.

    in the stored procedure, you can do something like this:

     

    ALTER      PROCEDURE [dbo].[AP_BCP_FILE]
        (
         @file_name     varchar(255),
         @format_file     varchar(255),
         @table_name     varchar(255),
         @db_login     varchar(255),
         @db_password     varchar(255) = NULL,
         @bcp_in_out    varchar(10),
         @err_file    varchar(255) = null,
         @hint        varchar(255) = NULL,
         @cDebug    char(1) = 'N',
         @include_output char(1) = 'Y'        -- added 3/12/2007 by lwl
        )
    WITH EXECUTE AS 'dbo' -----you can replace dbo to 'mynetwork\admin'
    AS

    you can put network admin account in sql account, then you can use that account do some special things when you need access network resource.

     

     

    have fun

    Ben

Reply
  • Hi Varsha,

    good day.

    the easiest way to fix the permission issue is using  'Execute as'.

    in the stored procedure, you can do something like this:

     

    ALTER      PROCEDURE [dbo].[AP_BCP_FILE]
        (
         @file_name     varchar(255),
         @format_file     varchar(255),
         @table_name     varchar(255),
         @db_login     varchar(255),
         @db_password     varchar(255) = NULL,
         @bcp_in_out    varchar(10),
         @err_file    varchar(255) = null,
         @hint        varchar(255) = NULL,
         @cDebug    char(1) = 'N',
         @include_output char(1) = 'Y'        -- added 3/12/2007 by lwl
        )
    WITH EXECUTE AS 'dbo' -----you can replace dbo to 'mynetwork\admin'
    AS

    you can put network admin account in sql account, then you can use that account do some special things when you need access network resource.

     

     

    have fun

    Ben

Children
No Data