Sample code for 30+ languages & platforms
SQL Server

SCP Download Files Matching a Pattern, such as *.txt

See more SCP Examples

Demonstrates how to SCP download files matching a pattern, such as *.txt.

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
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

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

    -- Connect to an SSH server:
    DECLARE @hostname nvarchar(4000)
    SELECT @hostname = 'MY-SSH-SERVER-DOMAIN-OR-IP'
    DECLARE @port int
    SELECT @port = 22

    EXEC sp_OAMethod @ssh, 'Connect', @success OUT, @hostname, @port
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        RETURN
      END

    -- Wait a max of 5 seconds when reading responses..
    EXEC sp_OASetProperty @ssh, 'IdleTimeoutMs', 5000

    -- Authenticate using login/password:
    EXEC sp_OAMethod @ssh, 'AuthenticatePw', @success OUT, 'MY-SSH-LOGIN', 'MY-SSH-PASSWORD'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        RETURN
      END

    -- Once the SSH object is connected and authenticated, use it
    -- in the SCP object.
    DECLARE @scp int
    EXEC @hr = sp_OACreate 'Chilkat.Scp', @scp OUT

    EXEC sp_OAMethod @scp, 'UseSsh', @success OUT, @ssh
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @scp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        EXEC @hr = sp_OADestroy @scp
        RETURN
      END

    EXEC sp_OASetProperty @scp, 'HeartbeatMs', 200

    -- Set the SyncMustMatch property to "*.pem" to download only .pem files
    EXEC sp_OASetProperty @scp, 'SyncMustMatch', '*.pem'

    DECLARE @remoteDir nvarchar(4000)
    SELECT @remoteDir = 'qa_syncA'
    DECLARE @localDir nvarchar(4000)
    SELECT @localDir = 'c:/aaworkarea/scp/qa_syncA'

    -- Download synchronization modes:
    -- mode=0: Download all files
    -- mode=1: Download all files that do not exist on the local filesystem.
    -- mode=2: Download newer or non-existant files.
    -- mode=3: Download only newer files.  
    --         If a file does not already exist on the local filesystem, it is not downloaded from the server.
    -- mode=5: Download only missing files or files with size differences.
    -- mode=6: Same as mode 5, but also download newer files.
    DECLARE @mode int
    SELECT @mode = 0

    -- Do not recurse the remote directory tree.  Only download files matching *.pem
    -- from the given remote directory.
    DECLARE @bRecurse int
    SELECT @bRecurse = 0

    EXEC sp_OAMethod @scp, 'SyncTreeDownload', @success OUT, @remoteDir, @localDir, @mode, @bRecurse
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @scp, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @ssh
        EXEC @hr = sp_OADestroy @scp
        RETURN
      END


    PRINT 'SCP download matching success.'

    -- Disconnect
    EXEC sp_OAMethod @ssh, 'Disconnect', NULL

    EXEC @hr = sp_OADestroy @ssh
    EXEC @hr = sp_OADestroy @scp


END
GO