| Macro Variables and System Options for Relational Databases |
| Default value: | none |
| Valid in: | configuration file, SAS invocation, OPTIONS statement |
| DBMS support: | DB2 under UNIX and PC Hosts, DB2 under z/OS, HP Neoview, Informix, Microsoft SQL Server, MySQL, Netezza, ODBC, OLE DB, Oracle, Sybase, Teradata |
Syntax |
| SASTRACE= ',,,d' | ' ,,d,' | ' d,' | ',,,db' | ' ,,,s' | ' ,,,sa' | ',,t,' |
specifies that all SQL statements that are sent to the DBMS are sent to the log. Here are the applicable statements:
| SELECT | DELETE |
| CREATE | SYSTEM CATALOG |
| DROP | COMMIT |
| INSERT | ROLLBACK |
| UPDATE |
For engines that do not generate SQL statements, API calls and all parameters are sent to the log.
specifies that all routine calls are sent to the log. All function enters, exits, and pertinent parameters and return codes are traced when you select this option. The information varies from engine to engine, however.
This option is most useful if you have a problem and need to send a SAS log to technical support for troubleshooting.
specifies that all DBMS calls--such as API and client calls, connection information, column bindings, column error information, and row processing--are sent to the log. This information will vary from engine to engine, however.
This option is most useful if you have a problem and need to send a SAS log to technical support for troubleshooting.
specifies that only a brief version of all SQL statements that the ',,,d' option normally generates are sent to the log.
specifies that a summary of timing information for calls made to the DBMS is sent to the log.
specifies that timing information for each call that is made to the DBMS is sent to the log along with a summary.
specifies that all threading information is sent to the log. Here is the information it includes:
The SASTRACE= options have behavior that is specific to SAS/ACCESS software. SASTRACE= is a very powerful tool to use when you want to see the commands that SAS/ACCESS sent to your DBMS. SASTRACE= output is DBMS-specific. However, most SAS/ACCESS engines show you statements like SELECT or COMMIT as the DBMS processes them for the SAS application. These details below can help you manage SASTRACE= output in your DBMS.
When using SASTRACE= on PC platforms, you must also specify SASTRACELOC=.
To turn SAS tracing off, specify this option:
options sastrace=off;
Log output is much easier to read if you specify NOSTSUFFIX. (NOSTSUFFIX is not supported on z/OS.) Because this code is entered without specifying the option, the resulting log is longer and harder to decipher.
options sastrace=',,,d' sastraceloc=saslog; proc print data=mydblib.snow_birthdays; run;
0 1349792597 sastb_next 2930 PRINT ORACLE_5: Prepared: 1 1349792597 sastb_next 2930 PRINT SELECT * FROM scott.SNOW_BIRTHDAYS 2 1349792597 sastb_next 2930 PRINT 3 1349792597 sastb_next 2930 PRINT 16 proce print data=mydblib.snow_birthdays; run; 4 1349792597 sastb_next 2930 PRINT ORACLE_6: Executed: 5 1349792597 sastb_next 2930 PRINT Prepared statement ORACLE_5 6 1349792597 sastb_next 2930 PRINT 7 1349792597 sastb_next 2930 PRINT
However, by using NOSTSUFFIX, the log file becomes much easier to read.
options sastrace=',,,d' sastraceloc=saslog nostsuffix; proc print data=mydblib.snow_birthdays; run;
ORACLE_1: Prepared: SELECT * FROM scott.SNOW_BIRTHDAYS 12 proc print data=mydblib.snow_birthdays; run; ORACLE_2: Executed: Prepared statement ORACLE_1
| Examples |
These examples use NOSTSUFFIX and SASTRACELOC=SASLOG and are based on this data set:
data work.winter_birthdays; input empid birthdat date9. lastname $18.; format birthdat date9.; datalines; 678999 28DEC1966 PAVEO JULIANA 3451 456788 12JAN1977 SHIPTON TIFFANY 3468 890123 20FEB1973 THORSTAD EDVARD 3329 ; run;
options sastrace=',,,d' sastraceloc=saslog nostsuffix; libname mydblib oracle user=scott password=tiger schema=bday_data; data mydblib.snow_birthdays; set work.winter_birthdays; run; libname mydblib clear;
Output is written to the SAS log, as specified in the SASTRACELOC=SASLOG option.
SAS Log Output from the SASTRACE= ',,,d' System Option
30 data work.winter_birthdays;
31 input empid birthdat date9. lastname $18.;
32 format birthdat date9.;
33 datalines;
NOTE: The data set WORK.WINTER_BIRTHDAYS has 3 observations and 3 variables.
NOTE: DATA statement used (Total process time):
real time 0.03 seconds
cpu time 0.04 seconds
37 ;
38 run;
39 options sastrace=',,,d' sastraceloc=saslog nostsuffix;
40 libname mydblib oracle user=scott password=XXXXX schema=bday_data;
NOTE: Libref MYDBLIB was successfully assigned as follows:
Engine: ORACLE
Physical Name:
41 proc delete data=mydblib.snow_birthdays; run;
ORACLE_1: Prepared:
SELECT * FROM SNOW_BIRTHDAYS
ORACLE_2: Executed:
DROP TABLE SNOW_BIRTHDAYS
NOTE: Deleting MYDBLIB.SNOW_BIRTHDAYS (memtype=DATA).
NOTE: PROCEDURE DELETE used (Total process time):
real time 0.26 seconds
cpu time 0.12 seconds
42 data mydblib.snow_birthdays;
43 set work.winter_birthdays;
44 run;
ORACLE_3: Prepared:
SELECT * FROM SNOW_BIRTHDAYS
NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
ORACLE_4: Executed:
CREATE TABLE SNOW_BIRTHDAYS(empid NUMBER ,birthdat DATE,lastname VARCHAR2 (18))
ORACLE_5: Prepared:
INSERT INTO SNOW_BIRTHDAYS (empid,birthdat,lastname) VALUES
(:empid,TO_DATE(:birthdat,'DDMONYYYY','NLS_DATE_LANGUAGE=American'),:lastname)
NOTE: There were 3 observations read from the data set WORK.WINTER_BIRTHDAYS.
ORACLE_6: Executed:
Prepared statement ORACLE_5
ORACLE: *-*-*-*-*-*-* COMMIT *-*-*-*-*-*-*
NOTE: The data set MYDBLIB.SNOW_BIRTHDAYS has 3 observations and 3 variables.
ORACLE: *-*-*-*-*-*-* COMMIT *-*-*-*-*-*-*
NOTE: DATA statement used (Total process time):
real time 0.47 seconds
cpu time 0.13 seconds
ORACLE_7: Prepared:
SELECT * FROM SNOW_BIRTHDAYS
45 proc print data=mydblib.snow_birthdays; run;
ORACLE_8: Executed:
Prepared statement ORACLE_7
NOTE: There were 3 observations read from the data set MYDBLIB.SNOW_BIRTHDAYS.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.04 seconds
cpu time 0.04 seconds
46
47 libname mydblib clear;
NOTE: Libref MYDBLIB has been deassigned.
options sastrace=',,d,' sastraceloc=saslog nostsuffix; libname mydblib oracle user=scott password=tiger schema=bday_data; data mydblib.snow_birthdays; set work.winter_birthdays; run; libname mydblib clear;
Output is written to the SAS log, as specified in the SASTRACELOC=SASLOG option.
SAS Log Output from the SASTRACE= ',,d,' System Option
84 options sastrace=',,d,' sastraceloc=saslog nostsuffix;
ACCESS ENGINE: Entering DBICON
ACCESS ENGINE: Number of connections is 1
ORACLE: orcon()
ACCESS ENGINE: Successful physical conn id 1
ACCESS ENGINE: Exiting DBICON, Physical Connect id = 1, with rc=0X00000000
85 libname mydblib oracle user=dbitest password=XXXXX schema=bday_data;
ACCESS ENGINE: CONNECTION= SHAREDREAD
NOTE: Libref MYDBLIB was successfully assigned as follows:
Engine: ORACLE
Physical Name: lupin
86 data mydblib.snow_birthdays;
87 set work.winter_birthdays;
88 run;
ACCESS ENGINE: Entering yoeopen
ACCESS ENGINE: Entering dbiopen
ORACLE: oropen()
ACCESS ENGINE: Successful dbiopen, open id 0, connect id 1
ACCESS ENGINE: Exit dbiopen with rc=0X00000000
ORACLE: orqall()
ORACLE: orprep()
ACCESS ENGINE: Entering dbiclose
ORACLE: orclose()
ACCESS ENGINE: DBICLOSE open_id 0, connect_id 1
ACCESS ENGINE: Exiting dbiclos with rc=0X00000000
ACCESS ENGINE: Access Mode is XO_OUTPUT
ACCESS ENGINE: Access Mode is XO_SEQ
ACCESS ENGINE: Shr flag is XHSHRMEM
ACCESS ENGINE: Entering DBICON
ACCESS ENGINE: CONNECTION= SHAREDREAD
ACCESS ENGINE: Number of connections is 2
ORACLE: orcon()
ACCESS ENGINE: Successful physical conn id 2
ACCESS ENGINE: Exiting DBICON, Physical Connect id = 2, with rc=0X00000000
ACCESS ENGINE: Entering dbiopen
ORACLE: oropen()
ACCESS ENGINE: Successful dbiopen, open id 0, connect id 2
ACCESS ENGINE: Exit dbiopen with rc=0X00000000
ACCESS ENGINE: Exit yoeopen with SUCCESS.
ACCESS ENGINE: Begin yoeinfo
ACCESS ENGINE: Exit yoeinfo with SUCCESS.
ORACLE: orovar()
NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
ORACLE: oroload()
ACCESS ENGINE: Entering dbrload with SQL Statement set to
CREATE TABLE SNOW_BIRTHDAYS(empid NUMBER ,birthdat DATE,lastname VARCHAR2 (18))
ORACLE: orexec()
ORACLE: orexec() END
ORACLE: orins()
ORACLE: orubuf()
ORACLE: orubuf()
ORACLE: SAS date : 28DEC1966
ORACLE: orins()
ORACLE: SAS date : 12JAN1977
ORACLE: orins()
ORACLE: SAS date : 20FEB1973
NOTE: There were 3 observations read from the data set WORK.WINTER_BIRTHDAYS.ORACLE: orforc()
ORACLE: orflush()
NOTE: The data set MYDBLIB.SNOW_BIRTHDAYS has 3 observations and 3 variables.
ACCESS ENGINE: Enter yoeclos
ACCESS ENGINE: Entering dbiclose
ORACLE: orclose()
ORACLE: orforc()
ORACLE: orflush()
ACCESS ENGINE: DBICLOSE open_id 0, connect_id 2
ACCESS ENGINE: Exiting dbiclos with rc=0X00000000
ACCESS ENGINE: Entering DBIDCON
ORACLE: ordcon
ACCESS ENGINE: Physical disconnect on id = 2
ACCESS ENGINE: Exiting DBIDCON with rc=0X00000000, rc2=0X00000000
ACCESS ENGINE: Exit yoeclos with rc=0x00000000
NOTE: DATA statement used (Total process time):
real time 0.21 seconds
cpu time 0.06 seconds
ACCESS ENGINE: Entering DBIDCON
ORACLE: ordcon
ACCESS ENGINE: Physical disconnect on id = 1
ACCESS ENGINE: Exiting DBIDCON with rc=0X00000000, rc2=0X00000000
89 libname mydblib clear;
NOTE: Libref MYDBLIB has been deassigned.
options sastrace='d,' sastraceloc=saslog nostsuffix; libname mydblib oracle user=scott password=tiger schema=bday_data; data mydblib.snow_birthdays; set work.winter_birthdays; run; libname mydblib clear;
Output is written to the SAS log, as specified in the SASTRACELOC=SASLOG option.
SAS Log Output from the SASTRACE= 'd,' System Option
ORACLE: PHYSICAL connect successful.
ORACLE: USER=scott
ORACLE: PATH=lupin
ORACLE: SCHEMA=bday_data
110 libname mydblib oracle user=dbitest password=XXXXX path=lupin schema=bday_data;
NOTE: Libref MYDBLIB was successfully assigned as follows:
Engine: ORACLE
Physical Name: lupin
111 data mydblib.snow_birthdays;
112 set work.winter_birthdays;
113 run;
ORACLE: PHYSICAL connect successful.
ORACLE: USER=scott
ORACLE: PATH=lupin
ORACLE: SCHEMA=bday_data
NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
ORACLE: INSERTBUFF option value set to 10.
NOTE: There were 3 observations read from the data set WORK.WINTER_BIRTHDAYS.
ORACLE: Rows processed: 3
ORACLE: Rows failed : 0
NOTE: The data set MYDBLIB.SNOW_BIRTHDAYS has 3 observations and 3 variables.
ORACLE: Successfully disconnected.
ORACLE: USER=scott
ORACLE: PATH=lupin
NOTE: DATA statement used (Total process time):
real time 0.21 seconds
cpu time 0.04 seconds
ORACLE: Successfully disconnected.
ORACLE: USER=scott
ORACLE: PATH=lupin
114 libname mydblib clear;
NOTE: Libref MYDBLIB has been deassigned.
options sastrace=',,,db' sastraceloc=saslog nostsuffix; libname mydblib oracle user=scott password=tiger path=oraclev9; data mydblib.employee1; set mydblib.employee; run;
Output is written to the SAS log, as specified in the SASTRACELOC=SASLOG option.
SAS Log Output from the SASTRACE= ',,,db' System Option
ORACLE_23: Prepared: on connection 2
SELECT * FROM EMPLOYEE
19?
ORACLE_24: Prepared: on connection 3
SELECT * FROM EMPLOYEE1
NOTE: SAS variable labels, formats, and lengths are not written to DBMS
tables.
ORACLE_25: Executed: on connection 4
CREATE TABLE EMPLOYEE1(NAME VARCHAR2 (20),ID NUMBER (5),CITY VARCHAR2
(15),SALARY NUMBER ,DEPT NUMBER (5))
ORACLE_26: Executed: on connection 2
SELECT statement ORACLE_23
ORACLE_27: Prepared: on connection 4
INSERT INTO EMPLOYEE1 (NAME,ID,CITY,SALARY,DEPT) VALUES
(:NAME,:ID,:CITY,:SALARY,:DEPT)
**NOTE**: ORACLE_27 on connection 4
The Execute statements associated with
this Insert statement are suppressed due to SASTRACE brief
setting-SASTRACE=',,,bd'. Remove the 'b' to get full trace.
NOTE: There were 17 observations read from the data set MYDBLIB.EMPLOYEE.
options sastrace=',,,s' sastraceloc=saslog nostsuffix; libname mydblib oracle user=scott password=tiger schema=bday_data; data mydblib.snow_birthdays; set work.winter_birthdays; run; libname mydblib clear;
Output is written to the SAS log, as specified in the SASTRACELOC=SASLOG option.
SAS Log Output from the SASTRACE= ',,,s' System Option
118 options sastrace=',,,s' sastraceloc=saslog nostsuffix;
119 libname mydblib oracle user=dbitest password=XXXXX schema=bday_data;
NOTE: Libref MYDBLIB was successfully assigned as follows:
Engine: ORACLE
Physical Name: lupin
120 data mydblib.snow_birthdays;
121 set work.winter_birthdays;
122 run;
NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
NOTE: There were 3 observations read from the data set WORK.WINTER_BIRTHDAYS.
NOTE: The data set MYDBLIB.SNOW_BIRTHDAYS has 3 observations and 3 variables.
Summary Statistics for ORACLE are:
Total SQL execution seconds were: 0.127079
Total SQL prepare seconds were: 0.004404
Total SQL row insert seconds were: 0.004735
Total seconds used by the ORACLE ACCESS engine were 0.141860
NOTE: DATA statement used (Total process time):
real time 0.21 seconds
cpu time 0.04 seconds
123 libname mydblib clear;
NOTE: Libref MYDBLIB has been deassigned.
options sastrace=',,,sa' sastraceloc=saslog nostsuffix; libname mydblib oracle user=scott password=tiger schema=bday_data; data mydblib.snow_birthdays; set work.winter_birthdays; run; libname mydblib clear;
Output is written to the SAS log, as specified in the SASTRACELOC=SASLOG option.
SAS Log Output from the SASTRACE= ',,,sa' System Option
146 options sastrace=',,,sa' sastraceloc=saslog nostsuffix;
147
148 libname mydblib oracle user=dbitest password=XXXXX path=lupin schema=dbitest insertbuff=1;
NOTE: Libref MYDBLIB was successfully assigned as follows:
Engine: ORACLE
Physical Name: lupin
149 data mydblib.snow_birthdays;
150 set work.winter_birthdays;
151 run;
NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
ORACLE: The insert time in seconds is 0.004120
ORACLE: The insert time in seconds is 0.001056
ORACLE: The insert time in seconds is 0.000988
NOTE: There were 3 observations read from the data set WORK.WINTER_BIRTHDAYS.
NOTE: The data set MYDBLIB.SNOW_BIRTHDAYS has 3 observations and 3 variables.
Summary Statistics for ORACLE are:
Total SQL execution seconds were: 0.130448
Total SQL prepare seconds were: 0.004525
Total SQL row insert seconds were: 0.006158
Total seconds used by the ORACLE ACCESS engine were 0.147355
NOTE: DATA statement used (Total process time):
real time 0.20 seconds
cpu time 0.00 seconds
152
153 libname mydblib clear;
NOTE: Libref MYDBLIB has been deassigned.
options sastrace=',,t,' sastraceloc=saslog nostsuffix; libname mydblib oracle user=scott password=tiger schema=bday_data; data mydblib.snow_birthdays(DBTYPE=(empid'number(10'); set work.winter_birthdays; run; proc print data=mydblib.snow_birthdays(dbsliceparm=(all,3)); run;
Output is written to the SAS log, as specified in the SASTRACELOC=SASLOG option.
SAS Log Output from the SASTRACE= ',,t,' System Option
165 options sastrace=',,t,' sastraceloc=saslog nostsuffix;
166 data mydblib.snow_birthdays(DBTYPE=(empid='number(10)'));
167 set work.winter_birthdays;
168 run;
NOTE: SAS variable labels, formats, and lengths are not written to DBMS tables.
NOTE: There were 3 observations read from the data set WORK.WINTER_BIRTHDAYS.
NOTE: The data set MYDBLIB.SNOW_BIRTHDAYS has 3 observations and 3 variables.
NOTE: DATA statement used (Total process time):
real time 0.21 seconds
cpu time 0.06 seconds
169 proc print data=mydblib.snow_birthdays(dbsliceparm=(all,3));
170 run;
ORACLE: DBSLICEPARM option set and 3 threads were requested
ORACLE: No application input on number of threads.
ORACLE: Thread 1 contains 1 obs.
ORACLE: Thread 2 contains 0 obs.
ORACLE: Thread 3 contains 2 obs.
ORACLE: Threaded read enabled. Number of threads created: 3
NOTE: There were 3 observations read from the data set MYDBLIB.SNOW_BaaaaaAYS.
NOTE: PROCEDURE PRINT used (Total process time):
real time 1.12 seconds
cpu time 0.17 seconds
For more information about tracing threaded reads, see Generating Trace Information for Threaded Reads.
Note: You can also use SASTRACE= options
with each other.
For example, SASTRACE=',,d,d'. ![[cautionend]](../../../../common/63294/HTML/default/images/cautend.gif)
Copyright © 2010 by SAS Institute Inc., Cary, NC, USA. All rights reserved.