<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Sybase Forums,Unix Forums-Sybase Adaptive server|Replication Server|Sun Solaris Unix|Perl|Technical Videos - All Forums]]></title>
		<link>http://www.sybaseteam.com/</link>
		<description><![CDATA[Sybase Forums,Unix Forums-Sybase Adaptive server|Replication Server|Sun Solaris Unix|Perl|Technical Videos - http://www.sybaseteam.com]]></description>
		<pubDate>Tue, 09 Mar 2010 16:27:28 -0800</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[ASE Migration from 12.5 to 15.0.X - SQL Code Changes]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=841</link>
			<pubDate>Tue, 09 Mar 2010 00:18:46 -0800</pubDate>
			<dc:creator>niceboykunal123</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=841</guid>
			<description><![CDATA[While ASE Migration from 12.5 to 15.0.X, Can anyone please help me to identify the blocks of  SQL which also need to cosider while migrating. Or which need to change hence the migaration will be successful.]]></description>
			<content:encoded><![CDATA[While ASE Migration from 12.5 to 15.0.X, Can anyone please help me to identify the blocks of  SQL which also need to cosider while migrating. Or which need to change hence the migaration will be successful.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA['rlogin' command]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=840</link>
			<pubDate>Mon, 08 Mar 2010 22:39:13 -0800</pubDate>
			<dc:creator>srama2</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=840</guid>
			<description><![CDATA[<B>The rlogin command allows remote login access to another host in the local network. rlogin passes information about the local environment, including the value of the TERM environment variable, to the remote host.<br />
<br />
Syntax<br />
<br />
rlogin [-468DEKLdx&#93; [-e char&#93; [-i localname&#93; [-k realm&#93; [-l username&#93; host<br />
<br />
Options:<br />
<br />
	-4    Use IPv4 addresses only.<br />
<br />
	-6    Use IPv6 addresses only.<br />
<br />
	-8    The -8 option allows an eight-bit input data path at all times;<br />
	   otherwise parity bits are stripped except when the remote side's<br />
	   stop and start characters are other than ^S/^Q.<br />
<br />
	-D    The -D option sets the TCP_NODELAY socket option which can improve<br />
	   interactive response at the expense of increased network load.<br />
<br />
	-E    The -E option stops any character from being recognized as an<br />
	   escape character.  When used with the -8 option, this provides a<br />
	   completely transparent connection.<br />
<br />
	-K    The -K option turns off all Kerberos authentication.<br />
<br />
	-L    The -L option allows the rlogin session to be run in ``litout''<br />
	   (see tty(4)) mode.<br />
<br />
	-d    The -d option turns on socket debugging (see setsockopt(2)) on the<br />
	   TCP sockets used for communication with the remote host.<br />
<br />
	-e    The -e option allows user specification of the escape character,<br />
	   which is ``~'' by default.  This specification may be as a literal<br />
	   character, or as an octal value in the form \nnn.<br />
<br />
	-i    The -i option allows the caller to specify a different local name<br />
	   to be used for authentication.  This option is restricted to pro-<br />
	   cesses with uid 0.<br />
<br />
	-k    The -k option requests rlogin to obtain tickets for the remote host<br />
	   in realm realm instead of the remote host's realm as determined by<br />
	   krb_realmofhost(3).<br />
<br />
	-l    The -l option specifies a different username for the remote login.<br />
	   If this option is not specified, your local username will be used.<br />
<br />
	-x    The -x option turns on DES encryption for all data passed via the<br />
	   rlogin session.  This may impact response time and CPU utilization,<br />
	   but provides increased security.<br />
Ex:<br />
<br />
[prodaip@tahiti&#93; /usr/appl/aip &#36; rlogin -l ftpaip iota <br />
ftpaip's Password: <br />
******************************************************************************* <br />
*															  * <br />
* Welcome to the **new** iota!									   * <br />
*															  * <br />
******************************************************************************* <br />
<br />
This system is for authorized users only. <br />
For help getting started, see <a href="http://zen.ntrs.com/unix/user/" target="_blank">http://zen.ntrs.com/unix/user/</a> <br />
<br />
Last unsuccessful login: Tue Feb  9 13:22:58 CST 2010 on /dev/pts/15 from ilch-m <br />
Last login: Tue Mar  9 00:23:42 CST 2010 on /dev/pts/6 from tahiti.ntrs.com <br />
<br />
[ftpaip@iota&#93; /usr/appl/aip/home/aipprod &#36; </B>]]></description>
			<content:encoded><![CDATA[<B>The rlogin command allows remote login access to another host in the local network. rlogin passes information about the local environment, including the value of the TERM environment variable, to the remote host.<br />
<br />
Syntax<br />
<br />
rlogin [-468DEKLdx] [-e char] [-i localname] [-k realm] [-l username] host<br />
<br />
Options:<br />
<br />
	-4    Use IPv4 addresses only.<br />
<br />
	-6    Use IPv6 addresses only.<br />
<br />
	-8    The -8 option allows an eight-bit input data path at all times;<br />
	   otherwise parity bits are stripped except when the remote side's<br />
	   stop and start characters are other than ^S/^Q.<br />
<br />
	-D    The -D option sets the TCP_NODELAY socket option which can improve<br />
	   interactive response at the expense of increased network load.<br />
<br />
	-E    The -E option stops any character from being recognized as an<br />
	   escape character.  When used with the -8 option, this provides a<br />
	   completely transparent connection.<br />
<br />
	-K    The -K option turns off all Kerberos authentication.<br />
<br />
	-L    The -L option allows the rlogin session to be run in ``litout''<br />
	   (see tty(4)) mode.<br />
<br />
	-d    The -d option turns on socket debugging (see setsockopt(2)) on the<br />
	   TCP sockets used for communication with the remote host.<br />
<br />
	-e    The -e option allows user specification of the escape character,<br />
	   which is ``~'' by default.  This specification may be as a literal<br />
	   character, or as an octal value in the form \nnn.<br />
<br />
	-i    The -i option allows the caller to specify a different local name<br />
	   to be used for authentication.  This option is restricted to pro-<br />
	   cesses with uid 0.<br />
<br />
	-k    The -k option requests rlogin to obtain tickets for the remote host<br />
	   in realm realm instead of the remote host's realm as determined by<br />
	   krb_realmofhost(3).<br />
<br />
	-l    The -l option specifies a different username for the remote login.<br />
	   If this option is not specified, your local username will be used.<br />
<br />
	-x    The -x option turns on DES encryption for all data passed via the<br />
	   rlogin session.  This may impact response time and CPU utilization,<br />
	   but provides increased security.<br />
Ex:<br />
<br />
[prodaip@tahiti] /usr/appl/aip &#36; rlogin -l ftpaip iota <br />
ftpaip's Password: <br />
******************************************************************************* <br />
*															  * <br />
* Welcome to the **new** iota!									   * <br />
*															  * <br />
******************************************************************************* <br />
<br />
This system is for authorized users only. <br />
For help getting started, see <a href="http://zen.ntrs.com/unix/user/" target="_blank">http://zen.ntrs.com/unix/user/</a> <br />
<br />
Last unsuccessful login: Tue Feb  9 13:22:58 CST 2010 on /dev/pts/15 from ilch-m <br />
Last login: Tue Mar  9 00:23:42 CST 2010 on /dev/pts/6 from tahiti.ntrs.com <br />
<br />
[ftpaip@iota] /usr/appl/aip/home/aipprod &#36; </B>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA['compress' command]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=839</link>
			<pubDate>Sun, 07 Mar 2010 22:16:54 -0800</pubDate>
			<dc:creator>srama2</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=839</guid>
			<description><![CDATA[<B><br />
'compress' command is used to compress a given file. The compress utility will attempt to reduce the size of  the named files by using adaptive Lempel-Ziv coding. Except when the output is to the standard  output,  each  file  will  be replaced  by  one  with  the extension .Z, while keeping the same ownership modes, change times and  modification  times. If  appending  the  .Z  to  the file pathname would make the pathname exceed 1023 bytes, the command  will  fail.  If  no files  are  specified, the standard input will be compressed to the standard output.<br />
<br />
syntax: <br />
		   compress [ file &#93;<br />
<br />
If no file is specified input is taken from stdin.<br />
<br />
Options:<br />
<br />
    - c Writes to stdout. no files are changed and  no  .Z files are created. The behavior of zcat is identical to that of `uncompress -c'.<br />
<br />
	-f  When compressing, forces compression of file,  even if  it  does  not  actually  reduce the size of the file, or if the corresponding <br />
	    file.Z  file already exists.<br />
    <br />
	-v  Verbose. Writes to standard error messages concerning  the  percentage reduction or expansion of each<br />
		  file.<br />
<br />
	-b bits  Sets the upper limit (in bits) for common substring codes.  bits  must  be  between 9 and 16 (16 is the default). Lowering <br />
			  the  number of bits  will  result in larger, less compressed files.<br />
<br />
uncompress<br />
	The uncompress utility will restore files to their  original<br />
	state  after  they  have  been compressed using the compress<br />
	utility. If no files are specified, the standard input  will<br />
	be uncompressed to the standard output.<br />
<br />
	This utility supports the uncompressing of  any  files  pro-<br />
	duced  by  compress. For files produced by compress on other<br />
	systems, uncompress supports 9- to 16-bit  compression  (see<br />
	-b).<br />
<br />
  zcat<br />
	The  zcat  utility  will  write  to  standard   output   the<br />
	uncompressed  form  of files that have been compressed using<br />
	compress. It is the equivalent of uncompress -c. Input files<br />
	are not affected.<br />
<br />
<br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test&#36; ls -l ex.sh<br />
-rwxr-----   1   prodaip	  aip						  75   Mar 4  05:39  ex.sh<br />
<br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test&#36; compress ex.sh<br />
<br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; ls -l ex.sh.Z <br />
-rwxr-----   1 prodaip  aip		 73 Mar  4 05:39 ex.sh.Z <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test <br />
<br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; zcat ex.sh.Z <br />
#!/usr/bin/ksh <br />
<br />
column=&#36;1 <br />
<br />
echo &#36;column <br />
<br />
nawk '{print &#36;'&#36;column'}' <br />
<br />
exit 0 <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; uncompress ex.sh <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; ls -l ex.sh <br />
-rwxr-----   1 prodaip  aip		 75 Mar  4 05:39 ex.sh <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; </B>]]></description>
			<content:encoded><![CDATA[<B><br />
'compress' command is used to compress a given file. The compress utility will attempt to reduce the size of  the named files by using adaptive Lempel-Ziv coding. Except when the output is to the standard  output,  each  file  will  be replaced  by  one  with  the extension .Z, while keeping the same ownership modes, change times and  modification  times. If  appending  the  .Z  to  the file pathname would make the pathname exceed 1023 bytes, the command  will  fail.  If  no files  are  specified, the standard input will be compressed to the standard output.<br />
<br />
syntax: <br />
		   compress [ file ]<br />
<br />
If no file is specified input is taken from stdin.<br />
<br />
Options:<br />
<br />
    - c Writes to stdout. no files are changed and  no  .Z files are created. The behavior of zcat is identical to that of `uncompress -c'.<br />
<br />
	-f  When compressing, forces compression of file,  even if  it  does  not  actually  reduce the size of the file, or if the corresponding <br />
	    file.Z  file already exists.<br />
    <br />
	-v  Verbose. Writes to standard error messages concerning  the  percentage reduction or expansion of each<br />
		  file.<br />
<br />
	-b bits  Sets the upper limit (in bits) for common substring codes.  bits  must  be  between 9 and 16 (16 is the default). Lowering <br />
			  the  number of bits  will  result in larger, less compressed files.<br />
<br />
uncompress<br />
	The uncompress utility will restore files to their  original<br />
	state  after  they  have  been compressed using the compress<br />
	utility. If no files are specified, the standard input  will<br />
	be uncompressed to the standard output.<br />
<br />
	This utility supports the uncompressing of  any  files  pro-<br />
	duced  by  compress. For files produced by compress on other<br />
	systems, uncompress supports 9- to 16-bit  compression  (see<br />
	-b).<br />
<br />
  zcat<br />
	The  zcat  utility  will  write  to  standard   output   the<br />
	uncompressed  form  of files that have been compressed using<br />
	compress. It is the equivalent of uncompress -c. Input files<br />
	are not affected.<br />
<br />
<br />
[prodaip@tahiti] /usr/appl/aip/saritha_test&#36; ls -l ex.sh<br />
-rwxr-----   1   prodaip	  aip						  75   Mar 4  05:39  ex.sh<br />
<br />
[prodaip@tahiti] /usr/appl/aip/saritha_test&#36; compress ex.sh<br />
<br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; ls -l ex.sh.Z <br />
-rwxr-----   1 prodaip  aip		 73 Mar  4 05:39 ex.sh.Z <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test <br />
<br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; zcat ex.sh.Z <br />
#!/usr/bin/ksh <br />
<br />
column=&#36;1 <br />
<br />
echo &#36;column <br />
<br />
nawk '{print &#36;'&#36;column'}' <br />
<br />
exit 0 <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; uncompress ex.sh <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; ls -l ex.sh <br />
-rwxr-----   1 prodaip  aip		 75 Mar  4 05:39 ex.sh <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; </B>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Shell Programming Control Structures - SH,BASH,KSH,CSH,TCSH quick reference]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=838</link>
			<pubDate>Fri, 05 Mar 2010 06:01:50 -0800</pubDate>
			<dc:creator>Joshi</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=838</guid>
			<description><![CDATA[Please download the card (image) below containing Shell Programming Control Structures - SH,BASH,KSH,CSH,TCSH quick reference]]></description>
			<content:encoded><![CDATA[Please download the card (image) below containing Shell Programming Control Structures - SH,BASH,KSH,CSH,TCSH quick reference]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sybase DBA Interview Question - How do you determine the current ASE edition running]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=837</link>
			<pubDate>Fri, 05 Mar 2010 05:45:58 -0800</pubDate>
			<dc:creator>Joshi</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=837</guid>
			<description><![CDATA[<B>Determining the Current Sybase ASE Edition using isql</B><br />
Learn how to find out which edition you are currently running.<br />
<br />
Enter:<br />
<br />
sp_lmconfig 'edition'<br />
<br />
Adaptive Server returns a value of EE, SE, or DE based on the edition that is currently running.<br />
<br />
&#36; isql -Uxxxx -Pxxxx -c<br />
Password: <br />
1> sp_lmconfig 'edition'<br />
2> <br />
<br />
Parameter Name    Config Value<br />
----------------- ------------<br />
edition		 EE<br />
<br />
(return status = 0)<br />
1> exit<br />
<br />
<B>Determining the Current Sybase ASE Edition from errorlog file </B><br />
<br />
00:00000:00000:2010/02/28 09:29:50.08 kernel  Checked out license ASE_CORE<br />
00:00000:00000:2010/02/28 09:29:50.08 kernel  Adaptive Server Enterprise (Enterprise Edition)]]></description>
			<content:encoded><![CDATA[<B>Determining the Current Sybase ASE Edition using isql</B><br />
Learn how to find out which edition you are currently running.<br />
<br />
Enter:<br />
<br />
sp_lmconfig 'edition'<br />
<br />
Adaptive Server returns a value of EE, SE, or DE based on the edition that is currently running.<br />
<br />
&#36; isql -Uxxxx -Pxxxx -c<br />
Password: <br />
1> sp_lmconfig 'edition'<br />
2> <br />
<br />
Parameter Name    Config Value<br />
----------------- ------------<br />
edition		 EE<br />
<br />
(return status = 0)<br />
1> exit<br />
<br />
<B>Determining the Current Sybase ASE Edition from errorlog file </B><br />
<br />
00:00000:00000:2010/02/28 09:29:50.08 kernel  Checked out license ASE_CORE<br />
00:00000:00000:2010/02/28 09:29:50.08 kernel  Adaptive Server Enterprise (Enterprise Edition)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA['ln' command]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=836</link>
			<pubDate>Thu, 04 Mar 2010 23:18:34 -0800</pubDate>
			<dc:creator>srama2</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=836</guid>
			<description><![CDATA[<B>'ln' command is used to link files and directories. It is used to create new files with the names speciifed and links them to existing files or directories.<br />
<br />
syntax:<br />
		   ln source_file target_file<br />
options: <br />
<br />
-s to create soft links.<br />
<br />
There are two types of links. Hard links and soft links. 'ln' without any options creates a hard link to the file. Hard link is a pointer to physical data. Effectively, all standard files are hard links, because they ultimately create an association between a file name and a physical data which corresponds to each file.<br />
<br />
Ex: <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; cat file1 <br />
echo "Hello !! Welcome to the world of unix !!!!" <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; </B><br />
<B><U>creating a hard link to file1</U></B><br />
<br />
<B>[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; ln file1 file2 <br />
<br />
<U>file2 is a hard link to file1 which contains same data as file. Both file1 &#x26; file2 share same inode.</U><br />
<br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; ls -l file2 <br />
-rw-r-----   2 prodaip  aip		 50 Mar  5 00:51 file2 <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; cat file2 <br />
echo "Hello !! Welcome to the world of unix !!!!" <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; ls -i file1 file2 <br />
	 1783 file1	   1783 file2 <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; <br />
<br />
Soft link (also referred to as symlink - short for symbolic link) is a special type of file in Unix, which references another file or directory. Symlink contains the name for another file and contains no actual data. To most commands, symlinks look like a regular file, but all the operations (like reading from a file) are referred to the file the symlink points to.<br />
<br />
When you remove a soft link, you simply remove one of the pointers to the real file. When you remove the original file a soft link points to, your data is lost. Even though your soft link will still exist, it will be pointing to the non-existent file and will therefore be useless (it will probably have to be removed as well).<br />
<br />
<br />
Ex:<br />
<br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; ln -s file1 file3 <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; ls -l file3 <br />
lrwxrwxrwx   1 prodaip  aip		  5 Mar  5 01:10 file3 -> file1 <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; cat file3 <br />
echo "Hello !! Welcome to the world of unix !!!!" <br />
[prodaip@tahiti&#93; /usr/appl/aip/saritha_test &#36; </B>]]></description>
			<content:encoded><![CDATA[<B>'ln' command is used to link files and directories. It is used to create new files with the names speciifed and links them to existing files or directories.<br />
<br />
syntax:<br />
		   ln source_file target_file<br />
options: <br />
<br />
-s to create soft links.<br />
<br />
There are two types of links. Hard links and soft links. 'ln' without any options creates a hard link to the file. Hard link is a pointer to physical data. Effectively, all standard files are hard links, because they ultimately create an association between a file name and a physical data which corresponds to each file.<br />
<br />
Ex: <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; cat file1 <br />
echo "Hello !! Welcome to the world of unix !!!!" <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; </B><br />
<B><U>creating a hard link to file1</U></B><br />
<br />
<B>[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; ln file1 file2 <br />
<br />
<U>file2 is a hard link to file1 which contains same data as file. Both file1 & file2 share same inode.</U><br />
<br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; ls -l file2 <br />
-rw-r-----   2 prodaip  aip		 50 Mar  5 00:51 file2 <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; cat file2 <br />
echo "Hello !! Welcome to the world of unix !!!!" <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; ls -i file1 file2 <br />
	 1783 file1	   1783 file2 <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; <br />
<br />
Soft link (also referred to as symlink - short for symbolic link) is a special type of file in Unix, which references another file or directory. Symlink contains the name for another file and contains no actual data. To most commands, symlinks look like a regular file, but all the operations (like reading from a file) are referred to the file the symlink points to.<br />
<br />
When you remove a soft link, you simply remove one of the pointers to the real file. When you remove the original file a soft link points to, your data is lost. Even though your soft link will still exist, it will be pointing to the non-existent file and will therefore be useless (it will probably have to be removed as well).<br />
<br />
<br />
Ex:<br />
<br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; ln -s file1 file3 <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; ls -l file3 <br />
lrwxrwxrwx   1 prodaip  aip		  5 Mar  5 01:10 file3 -> file1 <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; cat file3 <br />
echo "Hello !! Welcome to the world of unix !!!!" <br />
[prodaip@tahiti] /usr/appl/aip/saritha_test &#36; </B>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BENEFITS OF SYBASE DEVELOPERS NETWORK]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=835</link>
			<pubDate>Thu, 04 Mar 2010 09:06:07 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=835</guid>
			<description><![CDATA[* Access a large online library of technical documents<br />
    * Download software and code samples for developers<br />
    * Research options and solutions<br />
    * Learn about events and announcements for developers<br />
    * Pursue educational and training opportunities]]></description>
			<content:encoded><![CDATA[* Access a large online library of technical documents<br />
    * Download software and code samples for developers<br />
    * Research options and solutions<br />
    * Learn about events and announcements for developers<br />
    * Pursue educational and training opportunities]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Tuning SYBASE Transact-SQL Queries]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=833</link>
			<pubDate>Thu, 04 Mar 2010 08:05:03 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=833</guid>
			<description><![CDATA[<B>* Learn the Strengths and Weaknesses of the Optimizer</B><br />
<br />
<B>    * One of the largest factors determining performance is TSQL! Test not only for efficient plans but also semantic correctness.<br />
<br />
    * Optimizer will cost every permutation of accesses for queries involving 4 tables or less. Joins of more than 4 tables are "planned" 4-tables at a time (as listed in the FROM clause) so not all permutations are evaluated. You can influence the plans for these large joins by the order of tables in the FROM clause.</B><br />
<B><br />
    * Avoid the following, if possible:</B><br />
				 o What are SARGS?<br />
<br />
		  This is short for search arguments. A search argument is essentially a constant value such as:<br />
			 + "My company name"<br />
			 + 3448<br />
<br />
		  but not:<br />
			 + 344 + 88<br />
			 + like "%what you want%"<br />
		o Mathematical Manipulation of SARGs<br />
<br />
			 SELECT name FROM employee WHERE salary * 12 > 100000<br />
<br />
		o Use of Incompatible Datatypes Between Column and its SARG<br />
<br />
			 Float &#x26; Int, Char &#x26; Varchar, Binary &#x26; Varbinary are Incompatible;<br />
<br />
			 Int &#x26; Intn (allow nulls) OK<br />
<br />
		o Use of multiple "OR" Statements - especially on different columns in same table. If any portion of the OR clause requires a table scan, it will! OR Strategy requires additional cost of creating and sorting a work table.<br />
		o Not using the leading portion of the index (unless the query is completely covered)<br />
		o Substituting "OR" with "IN (value1, value2, ... valueN) Optimizer automatically converts this to an "OR"<br />
		o Use of Non-Equal Expressions (!=) in WHERE Clause.<br />
<B><br />
    * Use Tools to Evaluate and Tune Important/Problem Queries</B><br />
		o Use the "set showplan on" command to see the plan chosen as "most efficient" by optimizer. Run all queries through during development and testing to ensure accurate access model and known performance. Information comes through the Error Handler of a DB-Library application.<br />
		o Use the "dbcc traceon(3604, 302, 310)" command to see each alternative plan evaluated by the optimizer. Generally, this is only necessary to understand why the optimizer won't give you the plan you want or need (or think you need)!<br />
		o Use the "set statistics io on" command to see the number of logical and physical i/o's for a query. Scrutinize those queries with high logical i/o's.<br />
		o Use the "set statistics time on" command to see the amount of time (elapsed, execution, parse and compile) a query takes to run.<br />
		o If the optimizer turns out to be a "pessimizer", use the "set forceplan on" command to change join order to be the order of the tables in the FROM clause.<br />
		o If the optimizer refuses to select the proper index for a table, you can force it by adding the index id in parentheses after the table name in the FROM clause.<br />
<br />
			 SELECT * FROM orders(2), order_detail(1) WHERE ...<br />
<br />
			 This may cause portability issues should index id's vary/change by site !]]></description>
			<content:encoded><![CDATA[<B>* Learn the Strengths and Weaknesses of the Optimizer</B><br />
<br />
<B>    * One of the largest factors determining performance is TSQL! Test not only for efficient plans but also semantic correctness.<br />
<br />
    * Optimizer will cost every permutation of accesses for queries involving 4 tables or less. Joins of more than 4 tables are "planned" 4-tables at a time (as listed in the FROM clause) so not all permutations are evaluated. You can influence the plans for these large joins by the order of tables in the FROM clause.</B><br />
<B><br />
    * Avoid the following, if possible:</B><br />
				 o What are SARGS?<br />
<br />
		  This is short for search arguments. A search argument is essentially a constant value such as:<br />
			 + "My company name"<br />
			 + 3448<br />
<br />
		  but not:<br />
			 + 344 + 88<br />
			 + like "%what you want%"<br />
		o Mathematical Manipulation of SARGs<br />
<br />
			 SELECT name FROM employee WHERE salary * 12 > 100000<br />
<br />
		o Use of Incompatible Datatypes Between Column and its SARG<br />
<br />
			 Float & Int, Char & Varchar, Binary & Varbinary are Incompatible;<br />
<br />
			 Int & Intn (allow nulls) OK<br />
<br />
		o Use of multiple "OR" Statements - especially on different columns in same table. If any portion of the OR clause requires a table scan, it will! OR Strategy requires additional cost of creating and sorting a work table.<br />
		o Not using the leading portion of the index (unless the query is completely covered)<br />
		o Substituting "OR" with "IN (value1, value2, ... valueN) Optimizer automatically converts this to an "OR"<br />
		o Use of Non-Equal Expressions (!=) in WHERE Clause.<br />
<B><br />
    * Use Tools to Evaluate and Tune Important/Problem Queries</B><br />
		o Use the "set showplan on" command to see the plan chosen as "most efficient" by optimizer. Run all queries through during development and testing to ensure accurate access model and known performance. Information comes through the Error Handler of a DB-Library application.<br />
		o Use the "dbcc traceon(3604, 302, 310)" command to see each alternative plan evaluated by the optimizer. Generally, this is only necessary to understand why the optimizer won't give you the plan you want or need (or think you need)!<br />
		o Use the "set statistics io on" command to see the number of logical and physical i/o's for a query. Scrutinize those queries with high logical i/o's.<br />
		o Use the "set statistics time on" command to see the amount of time (elapsed, execution, parse and compile) a query takes to run.<br />
		o If the optimizer turns out to be a "pessimizer", use the "set forceplan on" command to change join order to be the order of the tables in the FROM clause.<br />
		o If the optimizer refuses to select the proper index for a table, you can force it by adding the index id in parentheses after the table name in the FROM clause.<br />
<br />
			 SELECT * FROM orders(2), order_detail(1) WHERE ...<br />
<br />
			 This may cause portability issues should index id's vary/change by site !]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Why should I use stored procedures in Sybase ASE]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=832</link>
			<pubDate>Thu, 04 Mar 2010 08:03:43 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=832</guid>
			<description><![CDATA[There are many advantages to using stored procedures (unfortunately they do not handle the text/image types):<br />
<br />
    * Security - you can revoke access to the base tables and only allow users to access and manipulate the data via the stored procedures.<br />
    * Performance - stored procedures are parsed and a query plan is compiled. This information is stored in the system tables and it only has to be done once.<br />
    * Network - if you have users who are on a WAN (slow connection) having stored procedures will improve throughput because less bytes need to flow down the wire from the client to ASE.<br />
    * Tuning - if you have all your SQL code housed in the database, then it's easy to tune the stored procedure without affecting the clients (unless of course the parameter change).<br />
    * Modularity - during application development, the application designer can concentrate on the front-end and the DB designer can concentrate on the ASE.<br />
    * Network latency - a client on a LAN may seem slower if it is sending large numbers of separate requests to a database server, bundling them into one procedure call may improve responsiveness. Also, servers handling large numbers of small requests can spend a surprising amount of CPU time performing network IO.<br />
    * Minimise blocks and deadlocks - it is a lot easier to handle a deadlock if the entire transaction is performed in one database request, also locks will be held for a shorter time, improving concurrency and potentially reducing the number of deadlocks. Further, it is easier to ensure that all tables are accessed in a consistent order if code is stored centrally rather than dispersed among a number of apps.]]></description>
			<content:encoded><![CDATA[There are many advantages to using stored procedures (unfortunately they do not handle the text/image types):<br />
<br />
    * Security - you can revoke access to the base tables and only allow users to access and manipulate the data via the stored procedures.<br />
    * Performance - stored procedures are parsed and a query plan is compiled. This information is stored in the system tables and it only has to be done once.<br />
    * Network - if you have users who are on a WAN (slow connection) having stored procedures will improve throughput because less bytes need to flow down the wire from the client to ASE.<br />
    * Tuning - if you have all your SQL code housed in the database, then it's easy to tune the stored procedure without affecting the clients (unless of course the parameter change).<br />
    * Modularity - during application development, the application designer can concentrate on the front-end and the DB designer can concentrate on the ASE.<br />
    * Network latency - a client on a LAN may seem slower if it is sending large numbers of separate requests to a database server, bundling them into one procedure call may improve responsiveness. Also, servers handling large numbers of small requests can spend a surprising amount of CPU time performing network IO.<br />
    * Minimise blocks and deadlocks - it is a lot easier to handle a deadlock if the entire transaction is performed in one database request, also locks will be held for a shorter time, improving concurrency and potentially reducing the number of deadlocks. Further, it is easier to ensure that all tables are accessed in a consistent order if code is stored centrally rather than dispersed among a number of apps.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to View MRU-LRU procedure cache chain in Sybase ASE]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=831</link>
			<pubDate>Thu, 04 Mar 2010 07:58:44 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=831</guid>
			<description><![CDATA[dbcc procbuf gives a listing of the current contents of the procedure cache. By repeating the process at intervals it is possible to watch procedures moving down the MRU-LRU chain, and so to see how long procedures remain in cache. The neat thing about this approach is that you can size your cache according to what is actually happening, rather than relying on estimates based on assumptions that may not hold on your site.<br />
<br />
To run it:<br />
<br />
dbcc traceon(3604)<br />
go<br />
dbcc procbuf<br />
go]]></description>
			<content:encoded><![CDATA[dbcc procbuf gives a listing of the current contents of the procedure cache. By repeating the process at intervals it is possible to watch procedures moving down the MRU-LRU chain, and so to see how long procedures remain in cache. The neat thing about this approach is that you can size your cache according to what is actually happening, rather than relying on estimates based on assumptions that may not hold on your site.<br />
<br />
To run it:<br />
<br />
dbcc traceon(3604)<br />
go<br />
dbcc procbuf<br />
go]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Improving Text/Image Type Performance in Sybase ASE]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=830</link>
			<pubDate>Thu, 04 Mar 2010 07:57:07 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=830</guid>
			<description><![CDATA[If you know that you are going to be using a text/insert column immediately, insert the row setting the column to a non-null value.<br />
<br />
There's a noticeable performance gain.<br />
<br />
Unfortunately, text and image datatypes cannot be passed as parameters to stored procedures. The address of the text or image location must be created and returned where it is then manipulated by the calling code. This means that transactions involving both text and image fields and stored procedures are not atomic. However, the datatypes can still be declared as not null in the table definition.<br />
<br />
Given this example -<br />
<br />
	<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>create table key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;not null,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notes&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;not null<br />
&nbsp;&nbsp;&nbsp;&nbsp;)</code></div></div>
<br />
This stored procedure can be used -<br />
<br />
	<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>create procedure sp_insert_key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@key&nbsp;&nbsp;&nbsp;&nbsp;int,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@textptr&nbsp;&nbsp;&nbsp;&nbsp;varbinary(16)&nbsp;&nbsp;&nbsp;&nbsp;output<br />
&nbsp;&nbsp;&nbsp;&nbsp;as<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;/*<br />
&nbsp;&nbsp;&nbsp;&nbsp;** Generate a valid text pointer for WRITETEXT by inserting an<br />
&nbsp;&nbsp;&nbsp;&nbsp;** empty string in the text field.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;insert key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notes<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;values<br />
&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@key,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;""<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;&nbsp;@textptr = textptr(notes)<br />
&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;&nbsp;key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;&nbsp; key&nbsp;&nbsp;&nbsp;&nbsp; = @key<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;go</code></div></div>
<br />
The return parameter is then used by the calling code to update the text field, via the dbwritetext() function if using DB-Library for example.]]></description>
			<content:encoded><![CDATA[If you know that you are going to be using a text/insert column immediately, insert the row setting the column to a non-null value.<br />
<br />
There's a noticeable performance gain.<br />
<br />
Unfortunately, text and image datatypes cannot be passed as parameters to stored procedures. The address of the text or image location must be created and returned where it is then manipulated by the calling code. This means that transactions involving both text and image fields and stored procedures are not atomic. However, the datatypes can still be declared as not null in the table definition.<br />
<br />
Given this example -<br />
<br />
	<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>create table key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;not null,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notes&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;not null<br />
&nbsp;&nbsp;&nbsp;&nbsp;)</code></div></div>
<br />
This stored procedure can be used -<br />
<br />
	<div class="codeblock">
<div class="title">Code:<br />
</div><div class="body" dir="ltr"><code>create procedure sp_insert_key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@key&nbsp;&nbsp;&nbsp;&nbsp;int,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@textptr&nbsp;&nbsp;&nbsp;&nbsp;varbinary(16)&nbsp;&nbsp;&nbsp;&nbsp;output<br />
&nbsp;&nbsp;&nbsp;&nbsp;as<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;/*<br />
&nbsp;&nbsp;&nbsp;&nbsp;** Generate a valid text pointer for WRITETEXT by inserting an<br />
&nbsp;&nbsp;&nbsp;&nbsp;** empty string in the text field.<br />
&nbsp;&nbsp;&nbsp;&nbsp;*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;insert key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notes<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;values<br />
&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@key,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;""<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;&nbsp;@textptr = textptr(notes)<br />
&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;&nbsp;key_n_text<br />
&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;&nbsp; key&nbsp;&nbsp;&nbsp;&nbsp; = @key<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 0<br />
&nbsp;&nbsp;&nbsp;&nbsp;go</code></div></div>
<br />
The return parameter is then used by the calling code to update the text field, via the dbwritetext() function if using DB-Library for example.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Essential and Optional DBA Tasks]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=829</link>
			<pubDate>Thu, 04 Mar 2010 07:48:35 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=829</guid>
			<description><![CDATA[<B>Essential DBA Tasks (courtesy of the Complete Sybase ASE Quick Reference Guide)</B><br />
<br />
    * Perform database and transaction log dumps (daily/hourly)<br />
    * Run dbcc checkstorage for all database and follow up on any problems found (weekly)<br />
    * Run update index statistics on user tables (weekly/as needed)<br />
    * Regular preventative stop and restart of ASE server<br />
	 (they suggest monthly but in my experience, other than applying EBFs you don’t ever need to take down the server)<br />
    * Monitor server errorlog for anomalies (daily)<br />
    * Troubleshoot unforeseen emergences (ad-hoc read<img src="http://www.sybaseteam.com/richedit/smileys/YahooIM/45.gif" border="0" alt="[Image: 45.gif&#93;" /> daily )<br />
    * Attend to (end) user / developer needs (whenever)<br />
<B><br />
Additional/Optional DBA Tasks (also courtesy of the Complete Sybase ASE Quick Reference Guide)</B><br />
<br />
Monitor growth of data volume and log space usage (daily/weekly)<br />
Defragment tables (reorg or (re)build clustered index) (monthly/quarterly)<br />
Monitor/tune server resource usage with sp_sysmon (when possible)<br />
Report problems to Sybase Technical Support(when necessary)<br />
Install EBFs or upgrades for ASE (when necessary)<br />
Set up the dbccdb database for dbcc checkstorage (once)<br />
Set up the sybsyntax database (once)]]></description>
			<content:encoded><![CDATA[<B>Essential DBA Tasks (courtesy of the Complete Sybase ASE Quick Reference Guide)</B><br />
<br />
    * Perform database and transaction log dumps (daily/hourly)<br />
    * Run dbcc checkstorage for all database and follow up on any problems found (weekly)<br />
    * Run update index statistics on user tables (weekly/as needed)<br />
    * Regular preventative stop and restart of ASE server<br />
	 (they suggest monthly but in my experience, other than applying EBFs you don’t ever need to take down the server)<br />
    * Monitor server errorlog for anomalies (daily)<br />
    * Troubleshoot unforeseen emergences (ad-hoc read<img src="http://www.sybaseteam.com/richedit/smileys/YahooIM/45.gif" border="0" alt="[Image: 45.gif]" /> daily )<br />
    * Attend to (end) user / developer needs (whenever)<br />
<B><br />
Additional/Optional DBA Tasks (also courtesy of the Complete Sybase ASE Quick Reference Guide)</B><br />
<br />
Monitor growth of data volume and log space usage (daily/weekly)<br />
Defragment tables (reorg or (re)build clustered index) (monthly/quarterly)<br />
Monitor/tune server resource usage with sp_sysmon (when possible)<br />
Report problems to Sybase Technical Support(when necessary)<br />
Install EBFs or upgrades for ASE (when necessary)<br />
Set up the dbccdb database for dbcc checkstorage (once)<br />
Set up the sybsyntax database (once)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sybase triggers protects our data - Very useful]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=828</link>
			<pubDate>Thu, 04 Mar 2010 07:34:21 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=828</guid>
			<description><![CDATA[<html>
<body>
<b>Takeaway:</b> Triggers are used to preserve data integrity by checking on or changing data in a consistent manner. Sybase provides various mechanisms for utilizing the power of triggers.</p>
<br />
				<br />
				<br>Automating routine tasks is the hallmark of a great application. This automation allows the developer to tackle more important issues. Triggers provide automation to database developers. This article introduces the concepts associated with using triggers in Sybase.<br><br><span class="subhead1">Sybase triggers are your data enforcers</span><br>A database trigger is a set of SQL statements that automatically "fires off" an action simultaneously with a specific operation, such as changing data in a table. A trigger consists of an event (an INSERT, DELETE, or UPDATE statement issued against an associated table) and an action (the related procedure). Triggers are used to preserve data integrity by checking on or changing data in a consistent manner.<br><br>Triggers are most often used to implement referential integrity or complex rules, or for keeping duplicate, summarized, or aggregated values in sync with detail records. While defaults bound to a column may contain only one value, a trigger can enforce a multitude of default values conditionally based on other data in the same or another table.<br><br>Triggers can enforce complex referential integrity (RI) where a lookup is required in another table, or even another column in the same table. They can prevent the modification of primary/foreign keys or even cascade the modifications to other tables. Many also consider storing summary values (or most other derivative values) in another table in real-time a justifiable use of triggers. Triggers can enforce complex business rules or quality assurance where you want to ensure that an updated value doesn’t deviate too far from the original value. Triggers are preferred over integrity constraints for another important reason: integrity constraints don’t facilitate conditional transaction management.<br><br><span class="subhead1">One trigger can have many uses</span><br>A trigger may be fired for any given data modification language (DML) SQL statement. These statements include INSERT, UPDATE, and DELETE, and each event may have its own trigger. It’s also possible to use the same trigger for more than one DML event by specifying what actions you wish the trigger to fire on in the CREATE statement.<br><br>Many developers believe the statement fires once for every affected row. Actually, a trigger fires only once for the DML statement that fired it. It’s a common misconception that a trigger is not fired if no rows are affected. Actually, the trigger fires even if no rows are affected. This can occur if the “where” clause is unsatisfied. The only situation in which a trigger will not fire is when a table constraint (defined as part of the CREATE statement which created the table) disallows the modification. Also, Delete triggers will not fire on a truncate table statement, and Insert triggers will not fire as a result of the Writetext command.<br><br><span class="subhead1">Trigger creation is simple and flexible</span><br>The syntax for creating a Sybase trigger is as follows:<br><span class="code">create trigger [<i>owner</i>.&#93;<i>trigger_name</i></span><br><span class="code">on [<i>owner</i>.&#93;<i>table_name</i></span><br><span class="code">{for {insert , update , delete}</span><br><span class="code">as <i>SQL_statements</i></span><br><br>Or, using the <i>if update</i> clause:<br><span class="code">create trigger [<i>owner</i>.&#93;<i>trigger_name</i></span><br><span class="code">on [<i>owner</i>.&#93;<i>table_name</i></span><br><span class="code">for {insert , update}</span><br><span class="code">as</span><br><span class="code">[if update (<i>column_name</i> )</span><br><span class="code">[{and | or} update (<i>column_name</i> )&#93;...&#93;</span><br><span class="code"><i>SQL_statements</i></span><br><span class="code">[if update (<i>column_name</i> )</span><br><span class="code">[{and | or} update (<i>column_name</i> )&#93;...</span><br><span class="code"><i>SQL_statements</i> &#93;...</span><br><br>To drop a trigger, the syntax is as follows:<br><span class="code">drop trigger <trigger_name></span><br><br>You can temporarily disable a trigger if you are loading a table from a previous dump and need to speed up the process. This capability was introduced in Sybase Adaptive Server 12.0. To disable or re-enable a trigger, the syntax is as follows:<br><span class="code">alter table [database_name.[owner_name&#93;.&#93;table_name</span><br><span class="code">{enable | disable} trigger [trigger_name&#93;</span><br><br>To keep things simple, we’ll create a trigger whose only purpose is to prevent deletions and insertions in a table. The syntax is as follows:<br><span class="code">create trigger publishers_IDtg</span><br><span class="code">on publishers</span><br><span class="code">for insert, delete</span><br><span class="code">as</span><br><span class="code">begin</span><br><span class="code">print "You cannot insert or delete any records!"</span><br><span class="code">rollback transaction</span><br><span class="code">return</span><br><span class="code">end</span><br><br>This trigger will fire whenever a DELETE or INSERT statement executes on the <i>publishers</i> table. This also includes situations where another trigger may have inserted or deleted records into this table. Rollback Transaction reverts any modifications made to the database from either the explicit or implied transaction that contained the SQL DELETE statement that caused the trigger to fire.<br><br>Now, let’s create a trigger that uses if update and whose job it is simply to disallow modifications to a primary key.<br><span class="code">create trigger publishers_Utg</span><br><span class="code">on publishers</span><br><span class="code">for update</span><br><span class="code">as</span><br><span class="code">if update( pub_id )</span><br><span class="code">begin</span><br><span class="code">print "You cannot Update the primary key!"</span><br><span class="code">rollback transaction</span><br><span class="code">return</span><br><span class="code">end</span><br><span class="code"> </span><br><br><span class="subhead1">Triggers access the inserted and deleted tables</span><br>During its execution, a trigger has access to two special tables. These tables are exactly the same in structure as the trigger table. They are always referred to as “inserted” and “deleted.” A trigger can access these tables to determine what modifications have occurred, but the trigger can’t modify these tables. Note that updates to table rows result in deletions followed by insertions. So, if records appear in both the deleted and inserted tables, the trigger knows an update was performed.<br><br><span class="subhead1">Rollback Transaction and Rollback Trigger prevent unwanted modifications</span><br>There are two commands that will explicitly roll back all modifications made by the SQL statement that fired a trigger: Rollback Transaction and Rollback Trigger.<br><br><span class="subhead2">Rollback Transaction</span><br>Use Rollback Transaction to prevent the modifications that fired the trigger, to roll back all changes back to the outermost <i>begin</i> transaction and to abort the rest. This is the method used most often; it ensures that all modifications associated with the outermost transaction, or batch are rolled back.<br><br><span class="subhead2">Rollback Trigger [with raiserror&#93;</span><br>Rollback Trigger is used to prevent the modifications that fired the trigger. It does allow any other transaction modifications or batch to be committed at the end. This method of rolling back is trickier to use and should be debugged thoroughly, as it may allow partial modifications and result in a loss of data integrity.<br><br>Let’s consider an example of this approach:<br><span class="code">begin tran</span><br><span class="code">insert into table_a (column_a) values (“11111”)</span><br><span class="code">insert into table_a (column_a) values (“22222”)</span><br><span class="code">insert into table_a (column_a) values (“33333”)</span><br><span class="code">commit trans</span><br><span class="code">end trans</span><br><br>If the Insert trigger on <i>table_a</i> issued a Rollback trigger on any firing of the Insert triggers in the above example, the other Inserts would not be affected and would subsequently be committed.<br><br>If the Insert trigger on <i>table_a</i> issued a rollback transaction on any firing of the Insert triggers in the above example, the already executed Inserts would be rolled back, and any remaining Inserts would never execute at all.<br><br><span class="subhead1">Generate lists to identify and view trigger source text</span><br>You can generate a list of triggers currently defined in the database using the following SELECT statement:<br><span class="code">select *</span><br><span class="code">from sysobjects</span><br><span class="code">where type = "TR"</span><br><br>You can view the source code of the trigger as follows:<br><span class="code">sp_helptext <trigger_name></span><br><br>As long as <i>sp_hidetext</i> hasn’t been used to encrypt the trigger text and the DBA has not disabled the ability to view the <i>syscomments.text</i> column, you should see the text used to create the specified trigger.<br><br>If you wish to know what tables and views a trigger references, there is always the <i>sp_depends</i> stored procedure.<br><span class="code">sp_depends <trigger_name></span><br><br><span class="subhead1"><a> </a><a> </a><a> </a><a>Trigg</a>er rules and limitations prevent unauthorized changes</span><br>Here is a list of trigger rules and limitations.<br><ul><li>Only the owner of a table can create or drop a trigger on that table.</li><li>Unlike views and stored procedures, permissions apply the same way inside a trigger as they do in a normal SELECT statement. Thus, if a user doesn’t have permission to update <i>table_b</i> and he updates <i>table_a</i> and fires <i>trigger_a</i>, which tries to update <i>table_b</i>, the trigger will fail and the modifications will fail.</li><li>In a trigger you may reference up to 192 other database objects like tables, views, etc.</li></ul><br><span class="subhead1">What isn't allowed in a trigger?</span><br>Here is a list of rules for what is not allowed in a trigger:<br><ul><li>Create and Drop commands are not allowed in any form. However, temp tables may be called in a stored procedure that is called by the trigger.</li><li>Alter table/database is not allowed.</li><li>Grant and Revoke are both disallowed.</li><li>Select Into isn’t allowed.</li><li>Truncate Table is prohibited.</li><li>Update Statistics isn’t allowed.</li><li>Reconfigure is not allowed.</li><li>Load Database/Transaction isn't allowed.</li><li>Disk Init/Mirror/Reinit/Refit/Remirror/Unmirror are all disallowed.</li></ul><br><span class="subhead1">Trigger naming conventions are important</span><br>Any good programmer knows the importance of naming conventions. Triggers are no exception. Trigger names are limited to 30 characters. My personal preference is to use the full table name with the suffixes in <b>Table A</b>.<br><span class="fighead">Table A</span><br><table width="543" bgcolor="f0f0df" border="1" cellpadding="2" cellspacing="0">
<br />
<tbody><tr align="left" bgcolor="#333366">
<td class="Normal" width="295">
<p style="text-align: center;" align="left"><font color="#ffffff" face="Arial, Helvetica, sans-serif" size="2"><br />
<b>Trigger Type</b><br />
		  </font></p>
	   </td>
<td class="Normal" width="295">
<p style="text-align: center;" align="left"><font color="#ffffff" face="Arial, Helvetica, sans-serif" size="2"><br />
<b>Table Name &#x26; Suffix</b><br />
		  </font></p>
<br />
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Insert</font></p>
	   </td>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_Itg</font></p>
	   </td>
	 </tr>
<br />
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Update</font></p>
	   </td>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_Utg</font></p>
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Delete</font></p>
<br />
	   </td>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_Dtg</font></p>
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Update &#x26; Delete</font></p>
	   </td>
<br />
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_UDtg</font></p>
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Update &#x26; Delete &#x26; Insert</font></p>
	   </td>
<br />
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_UDItg</font></p>
	   </td>
	 </tr>
<tr>
<td colspan="2" class="Normal" valign="top">
<i><font face="Arial, Helvetica, sans-serif" size="2">* Assuming the table name is employee</font></i><br />
	   </td>
	 </tr>
    </tbody></table><span class="caption">Trigger naming</span><br><br><span class="subhead1">Using triggers is easier than you think</span><br>This is by no means a definitive “end-all” to triggers. You’d need further discussion of these topics and others not mentioned here to even begin to master the art of trigger design and implementation. The Sybase documentation and a plethora of third-party manuals available at your local bookstore are valuable resources for understanding the power of triggers as part of your database design, and the finesse you need to use them. This overview should help you to begin to utilize them and understand what they can to do.<br />
<br />
</body>
</html>]]></description>
			<content:encoded><![CDATA[<html>
<body>
<b>Takeaway:</b> Triggers are used to preserve data integrity by checking on or changing data in a consistent manner. Sybase provides various mechanisms for utilizing the power of triggers.</p>
<br />
				<br />
				<br>Automating routine tasks is the hallmark of a great application. This automation allows the developer to tackle more important issues. Triggers provide automation to database developers. This article introduces the concepts associated with using triggers in Sybase.<br><br><span class="subhead1">Sybase triggers are your data enforcers</span><br>A database trigger is a set of SQL statements that automatically "fires off" an action simultaneously with a specific operation, such as changing data in a table. A trigger consists of an event (an INSERT, DELETE, or UPDATE statement issued against an associated table) and an action (the related procedure). Triggers are used to preserve data integrity by checking on or changing data in a consistent manner.<br><br>Triggers are most often used to implement referential integrity or complex rules, or for keeping duplicate, summarized, or aggregated values in sync with detail records. While defaults bound to a column may contain only one value, a trigger can enforce a multitude of default values conditionally based on other data in the same or another table.<br><br>Triggers can enforce complex referential integrity (RI) where a lookup is required in another table, or even another column in the same table. They can prevent the modification of primary/foreign keys or even cascade the modifications to other tables. Many also consider storing summary values (or most other derivative values) in another table in real-time a justifiable use of triggers. Triggers can enforce complex business rules or quality assurance where you want to ensure that an updated value doesn’t deviate too far from the original value. Triggers are preferred over integrity constraints for another important reason: integrity constraints don’t facilitate conditional transaction management.<br><br><span class="subhead1">One trigger can have many uses</span><br>A trigger may be fired for any given data modification language (DML) SQL statement. These statements include INSERT, UPDATE, and DELETE, and each event may have its own trigger. It’s also possible to use the same trigger for more than one DML event by specifying what actions you wish the trigger to fire on in the CREATE statement.<br><br>Many developers believe the statement fires once for every affected row. Actually, a trigger fires only once for the DML statement that fired it. It’s a common misconception that a trigger is not fired if no rows are affected. Actually, the trigger fires even if no rows are affected. This can occur if the “where” clause is unsatisfied. The only situation in which a trigger will not fire is when a table constraint (defined as part of the CREATE statement which created the table) disallows the modification. Also, Delete triggers will not fire on a truncate table statement, and Insert triggers will not fire as a result of the Writetext command.<br><br><span class="subhead1">Trigger creation is simple and flexible</span><br>The syntax for creating a Sybase trigger is as follows:<br><span class="code">create trigger [<i>owner</i>.]<i>trigger_name</i></span><br><span class="code">on [<i>owner</i>.]<i>table_name</i></span><br><span class="code">{for {insert , update , delete}</span><br><span class="code">as <i>SQL_statements</i></span><br><br>Or, using the <i>if update</i> clause:<br><span class="code">create trigger [<i>owner</i>.]<i>trigger_name</i></span><br><span class="code">on [<i>owner</i>.]<i>table_name</i></span><br><span class="code">for {insert , update}</span><br><span class="code">as</span><br><span class="code">[if update (<i>column_name</i> )</span><br><span class="code">[{and | or} update (<i>column_name</i> )]...]</span><br><span class="code"><i>SQL_statements</i></span><br><span class="code">[if update (<i>column_name</i> )</span><br><span class="code">[{and | or} update (<i>column_name</i> )]...</span><br><span class="code"><i>SQL_statements</i> ]...</span><br><br>To drop a trigger, the syntax is as follows:<br><span class="code">drop trigger <trigger_name></span><br><br>You can temporarily disable a trigger if you are loading a table from a previous dump and need to speed up the process. This capability was introduced in Sybase Adaptive Server 12.0. To disable or re-enable a trigger, the syntax is as follows:<br><span class="code">alter table [database_name.[owner_name].]table_name</span><br><span class="code">{enable | disable} trigger [trigger_name]</span><br><br>To keep things simple, we’ll create a trigger whose only purpose is to prevent deletions and insertions in a table. The syntax is as follows:<br><span class="code">create trigger publishers_IDtg</span><br><span class="code">on publishers</span><br><span class="code">for insert, delete</span><br><span class="code">as</span><br><span class="code">begin</span><br><span class="code">print "You cannot insert or delete any records!"</span><br><span class="code">rollback transaction</span><br><span class="code">return</span><br><span class="code">end</span><br><br>This trigger will fire whenever a DELETE or INSERT statement executes on the <i>publishers</i> table. This also includes situations where another trigger may have inserted or deleted records into this table. Rollback Transaction reverts any modifications made to the database from either the explicit or implied transaction that contained the SQL DELETE statement that caused the trigger to fire.<br><br>Now, let’s create a trigger that uses if update and whose job it is simply to disallow modifications to a primary key.<br><span class="code">create trigger publishers_Utg</span><br><span class="code">on publishers</span><br><span class="code">for update</span><br><span class="code">as</span><br><span class="code">if update( pub_id )</span><br><span class="code">begin</span><br><span class="code">print "You cannot Update the primary key!"</span><br><span class="code">rollback transaction</span><br><span class="code">return</span><br><span class="code">end</span><br><span class="code"> </span><br><br><span class="subhead1">Triggers access the inserted and deleted tables</span><br>During its execution, a trigger has access to two special tables. These tables are exactly the same in structure as the trigger table. They are always referred to as “inserted” and “deleted.” A trigger can access these tables to determine what modifications have occurred, but the trigger can’t modify these tables. Note that updates to table rows result in deletions followed by insertions. So, if records appear in both the deleted and inserted tables, the trigger knows an update was performed.<br><br><span class="subhead1">Rollback Transaction and Rollback Trigger prevent unwanted modifications</span><br>There are two commands that will explicitly roll back all modifications made by the SQL statement that fired a trigger: Rollback Transaction and Rollback Trigger.<br><br><span class="subhead2">Rollback Transaction</span><br>Use Rollback Transaction to prevent the modifications that fired the trigger, to roll back all changes back to the outermost <i>begin</i> transaction and to abort the rest. This is the method used most often; it ensures that all modifications associated with the outermost transaction, or batch are rolled back.<br><br><span class="subhead2">Rollback Trigger [with raiserror]</span><br>Rollback Trigger is used to prevent the modifications that fired the trigger. It does allow any other transaction modifications or batch to be committed at the end. This method of rolling back is trickier to use and should be debugged thoroughly, as it may allow partial modifications and result in a loss of data integrity.<br><br>Let’s consider an example of this approach:<br><span class="code">begin tran</span><br><span class="code">insert into table_a (column_a) values (“11111”)</span><br><span class="code">insert into table_a (column_a) values (“22222”)</span><br><span class="code">insert into table_a (column_a) values (“33333”)</span><br><span class="code">commit trans</span><br><span class="code">end trans</span><br><br>If the Insert trigger on <i>table_a</i> issued a Rollback trigger on any firing of the Insert triggers in the above example, the other Inserts would not be affected and would subsequently be committed.<br><br>If the Insert trigger on <i>table_a</i> issued a rollback transaction on any firing of the Insert triggers in the above example, the already executed Inserts would be rolled back, and any remaining Inserts would never execute at all.<br><br><span class="subhead1">Generate lists to identify and view trigger source text</span><br>You can generate a list of triggers currently defined in the database using the following SELECT statement:<br><span class="code">select *</span><br><span class="code">from sysobjects</span><br><span class="code">where type = "TR"</span><br><br>You can view the source code of the trigger as follows:<br><span class="code">sp_helptext <trigger_name></span><br><br>As long as <i>sp_hidetext</i> hasn’t been used to encrypt the trigger text and the DBA has not disabled the ability to view the <i>syscomments.text</i> column, you should see the text used to create the specified trigger.<br><br>If you wish to know what tables and views a trigger references, there is always the <i>sp_depends</i> stored procedure.<br><span class="code">sp_depends <trigger_name></span><br><br><span class="subhead1"><a> </a><a> </a><a> </a><a>Trigg</a>er rules and limitations prevent unauthorized changes</span><br>Here is a list of trigger rules and limitations.<br><ul><li>Only the owner of a table can create or drop a trigger on that table.</li><li>Unlike views and stored procedures, permissions apply the same way inside a trigger as they do in a normal SELECT statement. Thus, if a user doesn’t have permission to update <i>table_b</i> and he updates <i>table_a</i> and fires <i>trigger_a</i>, which tries to update <i>table_b</i>, the trigger will fail and the modifications will fail.</li><li>In a trigger you may reference up to 192 other database objects like tables, views, etc.</li></ul><br><span class="subhead1">What isn't allowed in a trigger?</span><br>Here is a list of rules for what is not allowed in a trigger:<br><ul><li>Create and Drop commands are not allowed in any form. However, temp tables may be called in a stored procedure that is called by the trigger.</li><li>Alter table/database is not allowed.</li><li>Grant and Revoke are both disallowed.</li><li>Select Into isn’t allowed.</li><li>Truncate Table is prohibited.</li><li>Update Statistics isn’t allowed.</li><li>Reconfigure is not allowed.</li><li>Load Database/Transaction isn't allowed.</li><li>Disk Init/Mirror/Reinit/Refit/Remirror/Unmirror are all disallowed.</li></ul><br><span class="subhead1">Trigger naming conventions are important</span><br>Any good programmer knows the importance of naming conventions. Triggers are no exception. Trigger names are limited to 30 characters. My personal preference is to use the full table name with the suffixes in <b>Table A</b>.<br><span class="fighead">Table A</span><br><table width="543" bgcolor="f0f0df" border="1" cellpadding="2" cellspacing="0">
<br />
<tbody><tr align="left" bgcolor="#333366">
<td class="Normal" width="295">
<p style="text-align: center;" align="left"><font color="#ffffff" face="Arial, Helvetica, sans-serif" size="2"><br />
<b>Trigger Type</b><br />
		  </font></p>
	   </td>
<td class="Normal" width="295">
<p style="text-align: center;" align="left"><font color="#ffffff" face="Arial, Helvetica, sans-serif" size="2"><br />
<b>Table Name & Suffix</b><br />
		  </font></p>
<br />
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Insert</font></p>
	   </td>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_Itg</font></p>
	   </td>
	 </tr>
<br />
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Update</font></p>
	   </td>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_Utg</font></p>
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Delete</font></p>
<br />
	   </td>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_Dtg</font></p>
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Update & Delete</font></p>
	   </td>
<br />
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_UDtg</font></p>
	   </td>
	 </tr>
<tr>
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">Update & Delete & Insert</font></p>
	   </td>
<br />
<td class="Normal" valign="top" width="295">
<p><font face="Arial, Helvetica, sans-serif" size="2">employee_UDItg</font></p>
	   </td>
	 </tr>
<tr>
<td colspan="2" class="Normal" valign="top">
<i><font face="Arial, Helvetica, sans-serif" size="2">* Assuming the table name is employee</font></i><br />
	   </td>
	 </tr>
    </tbody></table><span class="caption">Trigger naming</span><br><br><span class="subhead1">Using triggers is easier than you think</span><br>This is by no means a definitive “end-all” to triggers. You’d need further discussion of these topics and others not mentioned here to even begin to master the art of trigger design and implementation. The Sybase documentation and a plethora of third-party manuals available at your local bookstore are valuable resources for understanding the power of triggers as part of your database design, and the finesse you need to use them. This overview should help you to begin to utilize them and understand what they can to do.<br />
<br />
</body>
</html>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Microsoft Excel 2007 with Sybase IQ 15.0 and SQL Anywhere 11.0, Report 318]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=827</link>
			<pubDate>Thu, 04 Mar 2010 07:23:31 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=827</guid>
			<description><![CDATA[Microsoft Excel 2007 with Sybase IQ 15.0 and SQL Anywhere 11.0, Report 318<br />
<br />
This section describes each of the products tested and how they were used during testing. For more information about any of the products, please refer to the product literature. This report documents only the platforms and products tested for certification. Other possible combinations of these products and platforms are not certified by Sybase. For more information about Sybase IQ or SQL Anywhere, including known issues not encountered during this certification or those occurring on other platforms, see the Sybase Release Bulletin for the relevant product and platform.<br />
<br />
    * Microsoft Office Excel 2007 (hereafter called "Excel"), which is part of Microsoft Office Enterprise 2007 suite of products, served as the reporting tool, querying the Sybase IQ and SQL Anywhere databases. Excel includes a feature called MS Query. MS Query and its wizard were used to select tables in Sybase IQ and SQL Anywhere and build queries. The Excel version tested was a 32-bit application installed and run on a 64-bit Windows XP Professional machine.<br />
    * Sybase® IQ version 15.0 (hereafter called "IQ") served as a data source. Two 64-bit IQ server instances running on the same Sun SPARC Solaris 10 workstation were tested.<br />
    * 32-bit Sybase IQ 15.0 ODBC Driver for Windows version 11 (hereafter called the "IQ ODBC driver") enabled ODBC connectivity between Excel and the IQ servers. The driver was installed with the Sybase IQ 15.0 Network Database Client for Windows, which includes the driver in both 32-bit and 64-bit word sizes. Note that version 11 of the driver is the appropriate version to work with the 15.0 version of IQ. The 32-bit version of the driver was used because the version of Excel tested was a 32-bit application and the word-size of the driver must match that of the client application, not the target server.<br />
    * Sybase SQL Anywhere Network Server version 11.0 (hereafter called "SA") served as a data source. Two 64-bit SA instances run on the same Windows XP machine were tested.<br />
    * 32-bit Sybase SQL Anywhere 11 ODBC Driver (hereafter called the "SA ODBC driver") enabled connectivity between Excel and the SA servers. The SA ODBC driver was also installed with the Sybase IQ 15.0 Network Database Client for Windows, which includes both the SA and IQ drivers in both 32-bit and 64-bit word sizes.<br />
<br />
<br />
<img src="http://www.sybase.com/image/Screenshots/r318Environ.jpg" border="0" alt="[Image: r318Environ.jpg&#93;" /><br />
<br />
<br />
for more: <a href="http://www.sybase.in/detail?id=1064156" target="_blank">http://www.sybase.in/detail?id=1064156</a>]]></description>
			<content:encoded><![CDATA[Microsoft Excel 2007 with Sybase IQ 15.0 and SQL Anywhere 11.0, Report 318<br />
<br />
This section describes each of the products tested and how they were used during testing. For more information about any of the products, please refer to the product literature. This report documents only the platforms and products tested for certification. Other possible combinations of these products and platforms are not certified by Sybase. For more information about Sybase IQ or SQL Anywhere, including known issues not encountered during this certification or those occurring on other platforms, see the Sybase Release Bulletin for the relevant product and platform.<br />
<br />
    * Microsoft Office Excel 2007 (hereafter called "Excel"), which is part of Microsoft Office Enterprise 2007 suite of products, served as the reporting tool, querying the Sybase IQ and SQL Anywhere databases. Excel includes a feature called MS Query. MS Query and its wizard were used to select tables in Sybase IQ and SQL Anywhere and build queries. The Excel version tested was a 32-bit application installed and run on a 64-bit Windows XP Professional machine.<br />
    * Sybase® IQ version 15.0 (hereafter called "IQ") served as a data source. Two 64-bit IQ server instances running on the same Sun SPARC Solaris 10 workstation were tested.<br />
    * 32-bit Sybase IQ 15.0 ODBC Driver for Windows version 11 (hereafter called the "IQ ODBC driver") enabled ODBC connectivity between Excel and the IQ servers. The driver was installed with the Sybase IQ 15.0 Network Database Client for Windows, which includes the driver in both 32-bit and 64-bit word sizes. Note that version 11 of the driver is the appropriate version to work with the 15.0 version of IQ. The 32-bit version of the driver was used because the version of Excel tested was a 32-bit application and the word-size of the driver must match that of the client application, not the target server.<br />
    * Sybase SQL Anywhere Network Server version 11.0 (hereafter called "SA") served as a data source. Two 64-bit SA instances run on the same Windows XP machine were tested.<br />
    * 32-bit Sybase SQL Anywhere 11 ODBC Driver (hereafter called the "SA ODBC driver") enabled connectivity between Excel and the SA servers. The SA ODBC driver was also installed with the Sybase IQ 15.0 Network Database Client for Windows, which includes both the SA and IQ drivers in both 32-bit and 64-bit word sizes.<br />
<br />
<br />
<img src="http://www.sybase.com/image/Screenshots/r318Environ.jpg" border="0" alt="[Image: r318Environ.jpg]" /><br />
<br />
<br />
for more: <a href="http://www.sybase.in/detail?id=1064156" target="_blank">http://www.sybase.in/detail?id=1064156</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sybase partners with Wipro, SAPAG to offer integrated SAP business solutions]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=826</link>
			<pubDate>Thu, 04 Mar 2010 07:03:57 -0800</pubDate>
			<dc:creator>crazYoga</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=826</guid>
			<description><![CDATA[Sybase partners with Wipro, SAPAG to offer integrated SAP business solutions<br />
With organizations increasingly switching over to MEAP, latest SAP offerings on Sybase Unwired Platform(SUP) come as a welcome move<br />
<br />
In yet another move aiding organizations towards MEAP platforms, Sybase Software, India and Wipro Infotech have partnered to extend SAP applications to a variety of mobile devices, allowing SAP customers to access their enterprise applications in a secured way while on the move.<br />
<br />
Accordingly, Sybase and SAP will deliver co-developed solutions for extending SAP CRM and SAP Business Suite to mobile devices. Using these solutions, SAP customers will be able to leverage Wipro's SAP offerings to customize these Sybase mobile solutions for SAP, in addition to developing custom mobile applications for other SAP modules such as SRM SCM, and PLM, directed towards areas like mobile services, mobile sales, time and travel approvals, workflows, warehouse management, asset management, and more.<br />
<br />
Commenting on the tie-up, Sairaman Jagannathan, VP, business solutions division, Wipro remarked, "Building on our SAP partnership, this partnership with Sybase demonstrates a strong synergy between our companies, as we share a common goal of providing businesses easy access to valuable information contained within enterprise applications. As Sybase's implementation partner, we will bring in tight integration with a wide range of mobile environments to ensure secure and real-time access to information."<br />
<br />
Wipro's solutions will be based on Sybase Unwired Platform (SUP), enabling enterprises to implement, manage and expand their mobile computing initiatives in a coherent, streamlined and cost-effective manner. As part of this joint initiative, Wipro will set-up a Center of Excellence at its research center in Sangam, Bengaluru, where customers will be able to view various mobile applications developed by Wipro to mobilize SAP. The Center of Excellence will also be used to develop new industry frameworks that can be used across different customer verticals.<br />
<br />
Elaborating on the workability of these new solutions, Sunil Jose, MD, India &amp; subcontinent, Sybase Software said, "SUP supports a wide variety of popular mobile platforms. This enables true mobility for a large section of employees and not just top or middle management. Through this, SAP's customers will be able to create an information edge by optimizing and enhancing the infrastructure they already own, linking valuable data resources in place, and securely delivering information anytime, anywhere."<br />
<br />
According to a recent Gartner report on Mobile Enterprise Application Platforms (MEAP), over 95% of the organizations will be choosing MEAP or packaged mobile application vendors as their primary mobile development platforms till 2012, and from 2010 to 2013, the number of enterprises choosing multichannel MEAP vendors is estimated to rise by 10% annually.<br />
<br />
In this light, Sybase has also tied up with SAPAG to offer two new solutions for mobile users to carry out key business and CRM processes via iPhone and Windows Mobile. Built on SUP, the mobile solution extends the capabilities of SAP Business Suite applications, including SAP CRM, and also can be customized to tap into a variety of back-end data sources, including databases, web services, files and any enterprise application that leverages SOA. <br />
<br />
<br />
ref: <a href="http://voicendata.ciol.com" target="_blank">http://voicendata.ciol.com</a>]]></description>
			<content:encoded><![CDATA[Sybase partners with Wipro, SAPAG to offer integrated SAP business solutions<br />
With organizations increasingly switching over to MEAP, latest SAP offerings on Sybase Unwired Platform(SUP) come as a welcome move<br />
<br />
In yet another move aiding organizations towards MEAP platforms, Sybase Software, India and Wipro Infotech have partnered to extend SAP applications to a variety of mobile devices, allowing SAP customers to access their enterprise applications in a secured way while on the move.<br />
<br />
Accordingly, Sybase and SAP will deliver co-developed solutions for extending SAP CRM and SAP Business Suite to mobile devices. Using these solutions, SAP customers will be able to leverage Wipro's SAP offerings to customize these Sybase mobile solutions for SAP, in addition to developing custom mobile applications for other SAP modules such as SRM SCM, and PLM, directed towards areas like mobile services, mobile sales, time and travel approvals, workflows, warehouse management, asset management, and more.<br />
<br />
Commenting on the tie-up, Sairaman Jagannathan, VP, business solutions division, Wipro remarked, "Building on our SAP partnership, this partnership with Sybase demonstrates a strong synergy between our companies, as we share a common goal of providing businesses easy access to valuable information contained within enterprise applications. As Sybase's implementation partner, we will bring in tight integration with a wide range of mobile environments to ensure secure and real-time access to information."<br />
<br />
Wipro's solutions will be based on Sybase Unwired Platform (SUP), enabling enterprises to implement, manage and expand their mobile computing initiatives in a coherent, streamlined and cost-effective manner. As part of this joint initiative, Wipro will set-up a Center of Excellence at its research center in Sangam, Bengaluru, where customers will be able to view various mobile applications developed by Wipro to mobilize SAP. The Center of Excellence will also be used to develop new industry frameworks that can be used across different customer verticals.<br />
<br />
Elaborating on the workability of these new solutions, Sunil Jose, MD, India &amp; subcontinent, Sybase Software said, "SUP supports a wide variety of popular mobile platforms. This enables true mobility for a large section of employees and not just top or middle management. Through this, SAP's customers will be able to create an information edge by optimizing and enhancing the infrastructure they already own, linking valuable data resources in place, and securely delivering information anytime, anywhere."<br />
<br />
According to a recent Gartner report on Mobile Enterprise Application Platforms (MEAP), over 95% of the organizations will be choosing MEAP or packaged mobile application vendors as their primary mobile development platforms till 2012, and from 2010 to 2013, the number of enterprises choosing multichannel MEAP vendors is estimated to rise by 10% annually.<br />
<br />
In this light, Sybase has also tied up with SAPAG to offer two new solutions for mobile users to carry out key business and CRM processes via iPhone and Windows Mobile. Built on SUP, the mobile solution extends the capabilities of SAP Business Suite applications, including SAP CRM, and also can be customized to tap into a variety of back-end data sources, including databases, web services, files and any enterprise application that leverages SOA. <br />
<br />
<br />
ref: <a href="http://voicendata.ciol.com" target="_blank">http://voicendata.ciol.com</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA['ps' command]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=825</link>
			<pubDate>Thu, 04 Mar 2010 01:23:05 -0800</pubDate>
			<dc:creator>srama2</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=825</guid>
			<description><![CDATA[<B>'ps' command is used to display information about the processes running on the system.<br />
<br />
Syntax:	ps [ options &#93;<br />
<br />
The output of the command will contain the following<br />
<br />
PID - process id<br />
TTY - Terminal<br />
TIME - CPU time the process used<br />
CMD - command<br />
<br />
Options:<br />
	-a	   Displays all processes on a terminal, with the exception of group leaders. <br />
	 -c	   Displays scheduler data. <br />
	 -d	   Displays all processes with the exception of session leaders. <br />
	 -e	   Displays all processes. <br />
	 -f	    Displays a full listing. <br />
	 -glist    Displays data for the list of group leader IDs. <br />
	 -j	    Displays the process group ID and session ID. <br />
	 -l	   Displays a long listing <br />
	 -plist   Displays data for the list of process IDs. <br />
	 -slist   Displays data for the list of session leader IDs. <br />
	 -tlist    Displays data for the list of terminals. <br />
	 -ulist   Displays data for the list of usernames.<br />
<br />
Examples:<br />
<br />
To see every process on the system using standard syntax:<br />
   ps -e<br />
   ps -ef<br />
  <br />
    UID   PID  PPID  C    STIME TTY	 TIME CMD<br />
    root	0	0  0   Mar 25 ?	   4:29 sched<br />
    root	1	0  0   Mar 25 ?	  724:48 /etc/init -s<br />
    root	2	0  0   Mar 25 ?	   2:34 pageout<br />
    root	3	0  1   Mar 25 ?	  41038:16 fsflush<br />
    root  5464	1  0   Mar 25 ?	   0:00 /usr/lib/saf/sac -t 300<br />
    root    65	1  0   Mar 25 ?	   1:55 /sbin/in.mpathd</B>]]></description>
			<content:encoded><![CDATA[<B>'ps' command is used to display information about the processes running on the system.<br />
<br />
Syntax:	ps [ options ]<br />
<br />
The output of the command will contain the following<br />
<br />
PID - process id<br />
TTY - Terminal<br />
TIME - CPU time the process used<br />
CMD - command<br />
<br />
Options:<br />
	-a	   Displays all processes on a terminal, with the exception of group leaders. <br />
	 -c	   Displays scheduler data. <br />
	 -d	   Displays all processes with the exception of session leaders. <br />
	 -e	   Displays all processes. <br />
	 -f	    Displays a full listing. <br />
	 -glist    Displays data for the list of group leader IDs. <br />
	 -j	    Displays the process group ID and session ID. <br />
	 -l	   Displays a long listing <br />
	 -plist   Displays data for the list of process IDs. <br />
	 -slist   Displays data for the list of session leader IDs. <br />
	 -tlist    Displays data for the list of terminals. <br />
	 -ulist   Displays data for the list of usernames.<br />
<br />
Examples:<br />
<br />
To see every process on the system using standard syntax:<br />
   ps -e<br />
   ps -ef<br />
  <br />
    UID   PID  PPID  C    STIME TTY	 TIME CMD<br />
    root	0	0  0   Mar 25 ?	   4:29 sched<br />
    root	1	0  0   Mar 25 ?	  724:48 /etc/init -s<br />
    root	2	0  0   Mar 25 ?	   2:34 pageout<br />
    root	3	0  1   Mar 25 ?	  41038:16 fsflush<br />
    root  5464	1  0   Mar 25 ?	   0:00 /usr/lib/saf/sac -t 300<br />
    root    65	1  0   Mar 25 ?	   1:55 /sbin/in.mpathd</B>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Difference between normal Shutdown and Shutdown with nowait in Sybase ASE]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=824</link>
			<pubDate>Wed, 03 Mar 2010 06:46:50 -0800</pubDate>
			<dc:creator>Joshi</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=824</guid>
			<description><![CDATA[The default for the <B>shutdown command</B> is with wait. The with wait option allows Adaptive Server to finish executing SQL statements or procedures, perform a checkpoint in each database, disable new logins, and perform other shutdown tasks.<br />
<br />
Issuing the shutdown command prints a message like this to the sterr file:<br />
<br />
Server SHUTDOWN by request.The SQL Server is terminating this process.<br />
CT-LIBRARY error:<br />
<br />
This is normal behavior.<br />
<br />
If the message indicates that Adaptive Server is waiting for processes to complete, and you need to stop Adaptive Server immediately, you can use the <B>shutdown with nowait </B>command. shutdown with nowait does not wait for currently executing statements to finish, nor does it perform checkpoints in every database. Use the shutdown with nowait command only when necessary.]]></description>
			<content:encoded><![CDATA[The default for the <B>shutdown command</B> is with wait. The with wait option allows Adaptive Server to finish executing SQL statements or procedures, perform a checkpoint in each database, disable new logins, and perform other shutdown tasks.<br />
<br />
Issuing the shutdown command prints a message like this to the sterr file:<br />
<br />
Server SHUTDOWN by request.The SQL Server is terminating this process.<br />
CT-LIBRARY error:<br />
<br />
This is normal behavior.<br />
<br />
If the message indicates that Adaptive Server is waiting for processes to complete, and you need to stop Adaptive Server immediately, you can use the <B>shutdown with nowait </B>command. shutdown with nowait does not wait for currently executing statements to finish, nor does it perform checkpoints in every database. Use the shutdown with nowait command only when necessary.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sybase ASE Shutdown and Shared memory files]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=823</link>
			<pubDate>Wed, 03 Mar 2010 06:45:09 -0800</pubDate>
			<dc:creator>Joshi</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=823</guid>
			<description><![CDATA[<B>Sybase ASE Shutdown and Shared memory files</B><br />
<br />
When Adaptive Server starts, it creates SERVER_NAME.krg file in &#36;SYBASE/&#36;SYBASE_ASE directory to store information about shared memory segments that it uses.<br />
<br />
If Adaptive Server is configured with a memory size that is greater than the MAXSHMSEGSIZE parameter in the operating system then Adaptive Server may create additional shared memory segments and for every additional shared memory segment that it creates, an additional file with SERVER_NAME.srg[N&#93; (where N ranges from 0 – N), is created under &#36;SYBASE/&#36;SYBASE_ASE.<br />
<br />
When Adaptive Server is shut down in a normal manner, the shared memory files are automatically removed. If Adaptive Server crashes or is stopped with the kill -9 command, these files are not deleted. You need read and write permissions on these files to restart Adaptive Server after a crash or a kill -9 command, because Adaptive Server must be able to overwrite the previously created shared memory files.<br />
<br />
<B>If Adaptive Server or Backup Server is killed abnormally it also leaves shared memory segments.Sometimes the server may not come up until these shared memory segments are removed. Use the ipcs and ipcrm commands to identify and remove these shared memory segments that have “NATTACH” count as “0”. </B>]]></description>
			<content:encoded><![CDATA[<B>Sybase ASE Shutdown and Shared memory files</B><br />
<br />
When Adaptive Server starts, it creates SERVER_NAME.krg file in &#36;SYBASE/&#36;SYBASE_ASE directory to store information about shared memory segments that it uses.<br />
<br />
If Adaptive Server is configured with a memory size that is greater than the MAXSHMSEGSIZE parameter in the operating system then Adaptive Server may create additional shared memory segments and for every additional shared memory segment that it creates, an additional file with SERVER_NAME.srg[N] (where N ranges from 0 – N), is created under &#36;SYBASE/&#36;SYBASE_ASE.<br />
<br />
When Adaptive Server is shut down in a normal manner, the shared memory files are automatically removed. If Adaptive Server crashes or is stopped with the kill -9 command, these files are not deleted. You need read and write permissions on these files to restart Adaptive Server after a crash or a kill -9 command, because Adaptive Server must be able to overwrite the previously created shared memory files.<br />
<br />
<B>If Adaptive Server or Backup Server is killed abnormally it also leaves shared memory segments.Sometimes the server may not come up until these shared memory segments are removed. Use the ipcs and ipcrm commands to identify and remove these shared memory segments that have “NATTACH” count as “0”. </B>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[ASE 15.5 product manuals]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=822</link>
			<pubDate>Wed, 03 Mar 2010 03:05:59 -0800</pubDate>
			<dc:creator>shashikandi</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=822</guid>
			<description><![CDATA[Here is the link to ASE 15.5 manuals.<br />
 <br />
<a href="http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.ase.15.5/title.htm" target="_blank">http://infocenter.sybase.com/help/index..../title.htm</a><br />
 <br />
Thanks,<br />
Shashirekha]]></description>
			<content:encoded><![CDATA[Here is the link to ASE 15.5 manuals.<br />
 <br />
<a href="http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.ase.15.5/title.htm" target="_blank">http://infocenter.sybase.com/help/index..../title.htm</a><br />
 <br />
Thanks,<br />
Shashirekha]]></content:encoded>
		</item>
		<item>
			<title><![CDATA['nohup' command]]></title>
			<link>http://www.sybaseteam.com/showthread.php?tid=821</link>
			<pubDate>Tue, 02 Mar 2010 23:34:39 -0800</pubDate>
			<dc:creator>srama2</dc:creator>
			<guid isPermaLink="false">http://www.sybaseteam.com/showthread.php?tid=821</guid>
			<description><![CDATA[<B>'nohup' command is used to run commands immune to hangups.<br />
<br />
syntax:<br />
		  nohup command [ argument... &#93;<br />
<br />
'nohup' utility runs the command with the given arguments.<br />
<br />
'nohup' causes the command to ignore the SIGHUP signals which will cause them to be killed.<br />
<br />
'nohup'  utility can be used when it is known that the command will take a long time to run and the user wants to logout of the terminal. When the shell exits the system sends its children SIGHUP signals, which by default cause them to be killed. All stopped, running and background jobs will ignore SIGHUP and continue to run if their invocation is preceeded by 'nohup'.<br />
<br />
A nohup.out output file is created when the 'nohup' command runs.<br />
<br />
Ex:  nohup ./XYZ.sh &#x26;<br />
<br />
The '&#x26;' will cause XYZ.sh to run in background.</B><br />
<br />
<B>If an error occus in 'nohup' execution a value of 127 is returned.</B>]]></description>
			<content:encoded><![CDATA[<B>'nohup' command is used to run commands immune to hangups.<br />
<br />
syntax:<br />
		  nohup command [ argument... ]<br />
<br />
'nohup' utility runs the command with the given arguments.<br />
<br />
'nohup' causes the command to ignore the SIGHUP signals which will cause them to be killed.<br />
<br />
'nohup'  utility can be used when it is known that the command will take a long time to run and the user wants to logout of the terminal. When the shell exits the system sends its children SIGHUP signals, which by default cause them to be killed. All stopped, running and background jobs will ignore SIGHUP and continue to run if their invocation is preceeded by 'nohup'.<br />
<br />
A nohup.out output file is created when the 'nohup' command runs.<br />
<br />
Ex:  nohup ./XYZ.sh &<br />
<br />
The '&' will cause XYZ.sh to run in background.</B><br />
<br />
<B>If an error occus in 'nohup' execution a value of 127 is returned.</B>]]></content:encoded>
		</item>
	</channel>
</rss>