Sample code for 30+ languages & platforms
SQL Server

Set a Remote File's POSIX Permissions

See more SFTP Examples

Demonstrates the Chilkat SFtp.SetPermissions method, which sets the POSIX permission bits of a remote item. The arguments are the remote path (or handle), whether the first argument is a handle, and the permission bits. Pass the permission bits only, not the file-type bits.

Background: This is the SFTP equivalent of chmod. Common values, written as octal, are 0644 for a normal file, 0600 for a private file, and 0755 for an executable or a directory. In languages without octal literals the same values must be given in decimal or hexadecimal (for example 0755 is decimal 493). Setting an executable bit after uploading a script is the classic use.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    --  Demonstrates the SFtp.SetPermissions method, which sets the POSIX permission bits of a remote
    --  item.  The 1st argument is the remote path (or handle), the 2nd (isHandle) indicates which,
    --  and the 3rd is the permission bits.

    DECLARE @sftp int
    EXEC @hr = sp_OACreate 'Chilkat.SFtp', @sftp OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    --  Connect, authenticate, and initialize the SFTP subsystem.
    DECLARE @port int
    SELECT @port = 22
    EXEC sp_OAMethod @sftp, 'Connect', @success OUT, 'sftp.example.com', @port
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @sftp
        RETURN
      END

    --  Normally you would not hard-code the password in source.  You should instead obtain it
    --  from an interactive prompt, environment variable, or a secrets vault.
    DECLARE @password nvarchar(4000)
    SELECT @password = 'mySshPassword'

    EXEC sp_OAMethod @sftp, 'AuthenticatePw', @success OUT, 'mySshLogin', @password
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @sftp
        RETURN
      END

    EXEC sp_OAMethod @sftp, 'InitializeSftp', @success OUT
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @sftp
        RETURN
      END

    --  The 1st argument is a path, so isHandle is 0.
    DECLARE @isHandle int
    SELECT @isHandle = 0

    --  Pass the permission bits, not the file-type bits.  0755 gives the owner read/write/execute and
    --  read/execute to group and others -- a common mode for an executable script.
    DECLARE @permissions int
    SELECT @permissions = 493
    EXEC sp_OAMethod @sftp, 'SetPermissions', @success OUT, 'subdir/script.sh', @isHandle, @permissions
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @sftp
        RETURN
      END

    PRINT 'Permissions set.'

    EXEC sp_OAMethod @sftp, 'Disconnect', NULL

    EXEC @hr = sp_OADestroy @sftp


END
GO