How to Run the SF_TableLoader Procedure Without Using xp_cmdshell
How to Run the SF_TableLoader Procedure Without Using xp_cmdshell
Problem: Some Environments Do Not Have xp_cmdshell
In some SQL Server environments, the use of xp_cmdshell
may be restricted. This may be due to security concerns.
Solution: Use DBAmpAZ.exe
You can use a CmdEXEC feature of the SQL job step to run the underlying table loader program directly (i.e. instead of using the SF_TableLoader
stored procedure). The name of the exe is DBAmpAZ.exe
, and it is located in C:\"Program Files"\CData\"CData DBAmp"\bin\
.
The DBAmpAZ.exe
program accepts the following parameters:
-
Operation
—must beInsert
,Update
,Upsert
,Delete
,HardDelete
,Undelete
, orConvertLead
. This is similar to the first parameter ofSF_TableLoader
. -
Input Table
—name of the local SQL table containing the data. -
SQL Server Name
—name of the SQL instance to connect to. -
SQL Database Name
—name of the database to connect to. Enclose in double quotes if the name contains a blank. -
Link Server Name
—name of the DBAmp link server. -
Options
—various options, includingsoap
,bulkapi
,bulkapi2
,batchsize()
,ignorefailures
,soapheaders()
,externalid()
,serial
,parallel
, andassignmentruleid()
.
For more information on these options, see SF_TableLoader.
Example: Using the SOAP Option
Here is an example of a complete command using the soap
option:
"C:\Program Files\CData\CData DBAmp\bin\DBAmpAZ.exe"
UPDATE Account_Load BUDDY "Salesforcebackups" SALESFORCE "soap"
Although the command appears on multiple lines in this document, you must enter it as a single line in the job step. Also, double quotes are required when values contain blanks.
Example: Using the Command With No Options
Here is an example of a complete command using no options:
"C:\Program Files\CData\CData DBAmp\bin\DBAmpAZ.exe" UPDATE Account_Load BUDDY "Salesforce backups" SALESFORCE ""
The double quote (“”) at the end is mandatory even when no options are specified.
Example: Using an External ID and SOAP Headers
Here is an example of a complete command using an external ID and soap headers:
"C:\Program Files\CData\CData DBAmp\bin\DBAmpAZ.exe" upsert Account_Load BUDDY "Salesforcebackups" SALESFORCE
"soapheaders(EmailHeader,triggerAutoResponseEmail,true),externalid(XID__c)"
Setting Up a Job Step
When setting up a job step to call the program directly, you must change the Type of the job step to Operating System (CmdExec). Then enter your complete command in the Command text box. The command must be on a single line.
DBAmpAZ.exe
returns 0
for a successful completion and -1
if any rows failed. Ensure that the Process exit code of a successful command is 0
(zero). A -1
is returned when some of the rows succeeded and some failed. Use the Errorcolumn of the Result table to determine the failed rows. Rows that succeeded do not need to be resubmitted.
Below is a screen shot of a sample job step calling the DBAmpAZ.exe
.
Your command may be different depending on the location of the install directory.