Lianja Server Manager on Windows

From Lianjapedia
Revision as of 13:49, 27 January 2014 by Yvonne.milne (Talk | contribs)

Jump to: navigation, search

See Also

Lianja ODBC Driver, Lianja ODBC Manager, Lianja SQL Server Service on Linux, SQL System Tables

The Lianja Server Manager

The Lianja Server Manager allows you to:

  • Control the Lianja Server service that listens for Lianja SQL Server and Lianja Cloud Server requests
  • Activate and deactivate Lianja SQL Server and Lianja Cloud Server licenses
  • Configure settings for the Lianja Server service, Lianja SQL Server and Lianja Cloud Server
  • Manage background scripts running via Lianja SQL Server

The Lianja Server Manager can be accessed from its desktop shortcut or from the Windows Start Menu under Lianja SQL Server or Lianja Cloud Server.

User Account Control

If you have User Account Control enabled, please click Yes on the UAC dialog displayed when you run the Lianja Server Manager. On Windows XP, please run the Lianja Server Manager as the Administrator.

Service Manager

The Service Manager tab allows you to perform the following operations on the Lianja Server service:

  • Start
  • Pause
  • Stop
  • Restart

Pausing the service has no effect on existing connections, but prevents further connections to the server being made. To resume normal service after a Pause, click the Start/Continue button.

Checking the Auto-start service box ensures that the Lianja Server service will be restarted when the machine is rebooted.

The current status of the Lianja Server is shown in the status bar.

The License Information section displays your current license owner, type and maximum connections. To add a license, enter the key in the License key box and click Activate. The Deactivate button is used to deactivate the current license. This is demonstrated in the License Activation video.

Settings

The following settings can be configured:

Section Item Description
Port Listener Retries Number of times a connection attempt will be tried before returning an error. Default is 29.
Delay Number of seconds the Port Listener will wait to verify that the server it called was successfully started. Default is 10.
Timeout Number of seconds between each connection attempt. Default is 1.
Directory Paths Root Directory The Lianja Server root folder.
Log files The default folder for Lianja Server log files.
Error files The default folder for Lianja Server error files.
Temporary files The default folder for Lianja Server temporary files.
Data The default folder for Lianja Server databases.
Apps The default folder for Lianja Server Apps.
Library The default folder for Lianja Server Library files.
Services The default folder for Lianja Server background script services.
Environment Cursors Maximum concurrent cursors.
Log Files Enabled Check to enable log file creation.
Versions Check to enable log file versioning.
Listener Click to view the current Listener log file.
Server Click to view the current Server log file.
Purge Click to purge all log files.
Settings tab

Important: The Database directory for Lianja SQL Server is the Runtime data directory. This is the same directory used by the Lianja App Center and is different from the Development directory used by the Lianja App Builder. To make your databases or changes you have made to the southwind sample database available to the Lianja SQL Server, you will need to deploy them to the Runtime data directory. This can be done in a few clicks from the Deploy Worksurface in the Lianja App Builder: see here for details.

Note: When the Lianja Server service is started, the Port Listener is activated and listens for client requests. Once a client makes a connection, the Port Listener starts the Server for that connection.

One client could have more than one connection / Server.

At any one time, there will be only one Port Listener process, but there may be many Server processes.

Note: Logging should only be enabled when required, not for general usage.



Background Scripts

File:BackgroundScripts.png
Background Scripts tab

The Background Scripts tab allows for the creation, modification and configuration of background service scripts. Background service scripts can be used to perform data transformation, data synchronization or any other custom operation on your data that you require in your Apps.

Background service scripts run with no UI. They are primarily used to perform data collection tasks or batch job tasks such as checking for new or updated data and emailing out notifications to Lianja users. Typically a background service will sleep for a period of time and then repeat its work. Background service scripts have the standard program extensions of prg/dbo and reside in the services sub-folder of the Lianja SQL Server root (see Settings above for default folders). Whenever the Lianja SQL Server service is started, any programs in the services folder with their Startup Mode set to Automatic will be run.

Section Item Description
Scripts Script Script name
Status Service status: Stopped, Started.
Startup Mode Service startup mode: Manual, Automatic.
Buttons New... Create a new script.
Edit... Edit the selected script.
Delete Delete the selected script.
Mode (Automatic or Manual) Toggle the startup mode of the selected script between Automatic and Manual.
Refresh Refreshes the display.
Status (Started or Stopped) Toggle the status of the selected script between Started and Stopped.

Template Background Script

//============================================================================
//
// FILE         :   example.prg
//
// PURPOSE      :   Example code for a Lianja background service script on Windows.
//
//----------------------------------------------------------------------------
// 
// Background service scripts are called with two parameters:
//
// script       :   full path name of the script
// action       :   Either "start", "stop" or "restart"
// 
//-----------------------------------------------------------------------------
//
// Functions
//
// start()      :   Called when the service is started. Creates a 
//                  filename.active and processes all actions while this
//                  file exists.
//
// stop()       :   Removes the filename.active file so the service will
//                  stop when it next wakes up to do any work.
//
// doWork()     :   This is the place to add your main processing code.
//
//============================================================================
 
//-----------------------------------------------------------------------------
// declare global variables
//-----------------------------------------------------------------------------
public p_active_file
public p_error_file
public p_sleep_seconds
 
//-----------------------------------------------------------------------------
// Start action
//-----------------------------------------------------------------------------
function start( )
    // Check to see if a ".error" file already exists for this script 
    // and delete it if it does.
    if file(p_error_file)
        erase &p_error_file
        if file(p_active_file)
             erase &p_active_file
        endif
    endif
 
    // Check to see if a ".active" file already exists for this script 
    // and return if its already active
    if file(p_active_file)
        return .f.
    endif
 
     // Create the ".active" file for this script
    fp = fcreate(p_active_file)
    if ferror() = -1
        return .f.
    else
        fclose(fp)
    endif
 
    // process any work for this script
    do while file(p_active_file)
        sleep p_sleep_seconds
        doWork()
    enddo  
return .t.
 
//-----------------------------------------------------------------------------
// Stop action
//-----------------------------------------------------------------------------
function stop( )
    // Erase active file so service will stop
    erase &p_active_file
 
    // return result
    if file(p_active_file)
        rc = .f.
    else
        rc = .t.
    endif
return  rc
 
//-----------------------------------------------------------------------------
// error handler
//-----------------------------------------------------------------------------
function errorHandler( )
    on error
    save error to &p_error_file
    stop()
return
 
//-----------------------------------------------------------------------------
// function to handle the requested script action 
//-----------------------------------------------------------------------------
function handle_action(action, sleepTime, scriptName)    
 
    // Setup error handler
    on error errorHandler()
 
    // by convention we use files prefixed by the script name and postfixed with 
    // .active and .error to keep us informed of the script execution status
    p_active_file = lower(basename(left(scriptName, at(".", scriptName) -1)+".active"))
    p_error_file = lower(basename(left(scriptName, at(".", scriptName) -1)+".error"))
    p_sleep_seconds = sleepTime
 
    // Change the default directory as thats where the .active status file is written
    set default to "C:\Lianja\sqlserver\services"
 
    // handle the specified action
    do case
        // Start service
        case upper(action) = "START"
            result = start()
 
        // Stop service
        case upper(action) = "STOP"
            result = stop()
 
        // Restart service
        case upper(action) = "RESTART"
            stop()
            result = start()
 
        // Unknown command
        otherwise
            result = .f.
    endcase
return result
 
//-----------------------------------------------------------------------------
// this is the function that will be executed by this script to handle its work
//-----------------------------------------------------------------------------
function doWork( )
 
    // TODO: add your own custom code here
 
return
 
//-----------------------------------------------------------------------------
// Call the Lianja background service script action handler
//-----------------------------------------------------------------------------
return (handle_action(_para1, 10, procname()))