Welcome to TechWave 2006 SQL Anywhere Technical Summit Tracks 1 and 2 Monday, August 7, 2006 Tuesday August 8, 2006 iAnywhere at TechWave 2006 Tech Support at TechWave 2006 • Meet with technical experts from Sybase iAnywhere and TeamSybase • Bring your technical questions and get answers on the spot! • Located off the Exhibit Hall on the fourth floor, Palace Ballroom Foyer Ask the iAnywhere Experts • Drop in during support hours to have your questions answered by experts! • Appointments are available to speak one-on-one with Senior Engineers • Located across from the Tech Support area TechWave-To-Go AvantGo Channel on your handheld device • Download the TechWave AvantGo channel for up-to-date details on sessions, events, maps and more • www.ianywhere.com/techwavetogo • Visit the AvantGo Kiosk on the 3rd floor 2 iAnywhere at TechWave 2006 Don’t miss the Feedback & Futures Session • Tuesday, August 8th 4:30 pm – 6:00 pm • Join us to wrap up of all summit sessions and provide feedback • Save your questions for dedicated time with all session presenters • Giveaways, prizes and more – your survey is your ballot! Tuesday Night Event 8:00 – 10:00pm • Exclusive party for all 2-day Summit attendees • Pick up your ticket at the AvantGo Kiosk or the Feedback session • Must have your ticket + TechWave badge to enter the party 3 iAnywhere at TechWave 2006 Reference Program • Share your vision and innovation with your peers • Come by the Information Desk at the Sybase booth to complete a survey form -- all submissions will receive a gift! iAnywhere Developer Community A one-stop source for technical information! • Access to newsgroups, new betas and code samples • Technical whitepapers, tips and online product documentation • Excellent resources for commonly asked questions • All available express bug fixes and patches • Network with thousands of industry experts http://www.ianywhere.com/developer 4 SQL Anywhere 10 Dave Neudoerffer VP Engineering, Sybase iAnywhere Dave.neudoerffer@ianywhere.com Monday, August 7, 2006 1:00 pm – 2:30 pm Agenda SQL Anywhere 10 Enhancements • • • • Performance Protection Productivity Innovative Data Movement Release Notes 6 The Data Explosion in Frontline Environments • The landscape for where data is managed is changing… – – – – Enterprises are becoming more distributed, with global workforces Small & medium-sized enterprises are more sophisticated users of IT Large enterprises are increasingly mobilizing their workforces Software implementation and management is increasingly outsourced Packaged applications, hosting, 3rd party development • Front lines evolving into a mission-critical computing environment – – – – Server applications installed in an ISV’s customer sites Workgroup applications installed in retail outlets, remote offices ISV applications with databases hidden under the covers Mobile applications used by field workers and sales forces 7 At the Frontlines – Scenarios Desktop Server Small & Medium Enterprise • Accounting • Administration Solution packages • Phone systems • Point of sale Remote office • Store management • Inventory control Mobile • Traveling sales • Field service worker • Inspector … Remote office Mobile environments 8 SQL Anywhere is Unique Built from inception to enable front line applications • Customers with server, desktop, mobile, remote office applications Over 15 years of engineering of data management technologies for frontline environments • Running on laptops and desktops while other enterprise DBs were running in large data centers • First synchronization solution for mobile environments Focus on making applications just as reliable, secure and available as those running in an enterprise HQ 9 SQL Anywhere 10 Components SQL Anywhere Self-managing relational database with high reliability, high performance out of the box, small footprint, and a full range of SQL features across a variety of platforms. UltraLite Database system for small devices, including Palm OS, Pocket PC, and Symbian, providing full transaction-processing support, a choice of development models, and synchronization with enterprise data stores. MobiLink Synchronization technology for sharing information among relational databases while maintaining the integrity of transactions across the entire system. QAnywhere Application-to-application messaging solution that delivers secure and assured message delivery for distributed and mobile users. 10 SQL Anywhere 10 Components SQL Remote Synchronization technology for synchronizing ASA remotes with ASA consolidated databases. Message based – direct connection not required. Sybase Central Management tool for ASA, UltraLite, MobiLink and SQL Remote. Uses a tree structure for easy manipulation and management of objects. Also includes a built-in stored procedure debugger. PowerDesigner Physical data modeller allows complete design of database schemas. It also provides facilities to reverse engineer the schema of an existing database and to generate SQL to create any schema you design. Infomaker A powerful and easy-to-use reporting tool that lets you query databases and create sophisticated and effective custom reports of data. DataWindow.NET Powerful control/component for .NET environments providing flexible broad range of data capabilities. 11 SQL Anywhere 10 Over 200 enhancements to both the Database Server and Database Synchronization components in 4 significant areas • Performance – Equipping customers to deal with data explosion – Pushing SQL Anywhere to 100’s of gig’s and 1000’s of users • Protection – Consequences of data loss are increasing – Push data protection, by theft or system failure, to higher levels • Productivity – Increasing developer productivity, improving ROI – New tools and enhancements for development, analysis and debugging • Innovative Data Movement - address increasing volume of data being exchanged with larger numbers of systems – New architecture design, integration and mobile Web Services tools 12 Agenda SQL Anywhere 10 Enhancements • • • • Performance Protection Productivity Innovative Data Movement Release Notes 13 Enhanced Data Management Performance - customers better equipped to deal with an explosion of data in frontline environments • • • • • • • Materialized views Snapshot isolation Intra-query parallelism Parallel backups New Index design New Storage format Column Compression • • • • • Checkpoint write behind Expressions Java VM New Catalog Random access to BLOBs 14 Materialized Views Functionality Benefits Result of view stored as ordinary base table in database Read-only Can build indices on it Can control frequency of refresh Used in optimization Enhanced query performance Improved concurrency Usage Scenarios When using large databases Expensive queries on devices with limited processing power When frequent queries result in repetitive aggregation (summing of data) When access to up-to-the-moment data is not a requirement 15 Snapshot Isolation Functionality Benefits Mechanism to eliminate “blocking” of other readers when locks held Keeps copy of original data while it’s being changed for users who want to read it in the interim Also known as row versioning Enabled by global database option Can list currently active snapshots Reduced locking Readers don’t block readers Readers don’t block writers Writers don’t block readers Better performance Ensure consistency in reporting applications Usage Scenarios Cases where query “locks” are being held for long periods of time and preventing completion of query results for other users (blocking) Long running batch jobs / reports while user queries being issued Ex. Accounting Balance Sheet report Statistical queries that “touch” a lot of rows Stored procedures or logic holding transactions open for longer periods 16 Intra-query Parallelism Functionality Use of multiple processors or cores for a single query Parallel sequential scans, index scans, joins NOTE: Do not confuse with inter-query parallelism (supported since SQL Anywhere V6) which allows multiple queries to execute in parallel Benefits Can speed up CPU-bound queries Single client apps can benefit since server can exploit more than one CPU for each request Usage Scenarios By default, engine automatically uses for benefit Option available to control its usage 17 Parallel Backups Functionality Benefits Decreases overall time required for backups Only bound by performance of slowest I/O component Supported through server-side image backups, dbbackup utility, db_backup function Independent I/O operations may be overlapped with each other (vs. performed sequentially) Usage Scenarios Especially useful for larger databases Internal tests showed up to 3-fold improvement in performance on 10GB database 18 Indexing Enhancements Functionality Benefits New indexes (to support snapshot isolation) Improved control over how indexes are created Improvements to storing and tracking index information Reduced contention on inserts Improved concurrency leads to increased performance in multi-user environments Can index BLOB data -> faster searching / retrieval Usage Scenarios If a particular column is searched frequently Large tables with many rows Index Consultant tool assists you in appropriate selection of indexes for your database! 19 New Storage Format Functionality Benefits Redesigned persistent storage format Allows new indexes, snapshot isolation Better placement of data on the disk More efficient use of page storage Faster sequential scans, row lookups Usage Scenarios All ;-) 20 Enhanced Data Management Performance - customers better equipped to deal with an explosion of data in frontline environments • • • • • • • Materialized views Snapshot isolation Intra-query parallelism Parallel backups New Index design New Storage format Column Compression • • • • • Checkpoint write behind Expressions Java VM New Catalog Random access to BLOBs 22 Agenda SQL Anywhere 10 Enhancements • • • • Performance Protection Productivity Innovative Data Movement Release Notes 23 Enhanced Data Management Protection - pushing data protection, whether from theft or system failure, to even higher levels as consequences of data loss in frontline environments grow in importance High Availability (Hot Failover) • Database Mirroring • Cluster agent FIPS 140-2 validated security Table level encryption Resource governors RSA encryption included Kerberos authentication New authorities added • BACKUP and VALIDATE Server lockdown to disable database server features or groups of features • Eg. local_call 24 High Availability – Database Mirroring Functionality Benefits Servers communicating with each other to increase availability of DB • Primary – current active server • Mirror – current standby server • Arbiter – determines primary Maintain separate copies of db / logs Clients only see (connect) to 1 server Protection of data against system failure Very easy to setup (built-in) No special hw or sw requirements Does not require particular OS Little impact on server performance Failover automatic, fast Usage Scenarios For highest levels of data protection against system failure (eg if you require 24 x 7 availability) Use Mirroring if you want something built into the server with no requirement for third-party software 25 High Availability – Database Mirroring Arbiter determines who is the current active server (also known as primary server) Arbiter Server 26 High Availability – Cluster Support Functionality Benefits Custom agent for Veritas Cluster Service (VCS) Set of scripts integrated into VCS install One node goes down, automatic failover to another node with no intervention required (eg. shared disk) Cluster support existed before Jasper but now more “SQL Anywhere-aware” Protection of data against system failure Can leverage existing Veritas Cluster Server (VCS) installations More control over how/when failover for database server occurs Can failover a server, or a database on a server Usage Scenarios For highest levels of data protection against system failure (eg if you require 24 x 7 availability) Use VCS Cluster Agent if you are already a VCS shop 27 FIPS 140-2 Validated Security Functionality Benefits Strong encryption components have been FIPS 140-2 validated Extended to multiple platforms beyond Windows including Linux and Solaris FIPS 140-2 validation provided without having to go through lengthy and costly FIPS approval process yourself Usage Scenarios Government agencies, financial institutions, healthcare providers requiring FIPS 140-2 validation of any strong encryption components 28 Table Level Encryption Functionality Benefits Ability to encrypt individual tables vs. the complete database Enabled through simple database option Allows database users finer granularity on security control Reduces overhead of encrypting / decrypting non-sensitive data in database Usage Scenarios Companies (eg. government agencies, financial institutions, healthcare providers) requiring more granularity on strong encryption components 29 Enhanced Data Management Protection - pushing data protection, whether from theft or system failure, to even higher levels as consequences of data loss in frontline environments grow in importance High Availability (Hot Failover) • Database Mirroring • Cluster agent FIPS 140-2 validated security Table level encryption Resource governors RSA encryption included Kerberos authentication New authorities added • BACKUP and VALIDATE Server lockdown to disable database server features or groups of features • Eg. local_call 30 Agenda SQL Anywhere 10 Enhancements • • • • Performance Protection Productivity Innovative Data Movement Release Notes 31 Enhanced Data Management Productivity - enhanced developer productivity tools to decrease implementation time of mission critical frontline applications Performance Analysis and Application profiling Visual Studio Integration .NET 2.0 Support SA Deployment Wizard UltraLite Enhancements Global shared temporary tables Temporary procedures Task based administration Admin tool system wide search capabilities Product wide exception reporting and statistics gathering Internationalization • Extended multi-byte and Unicode character sorting • NCHAR data type Interfaces and Tools • JDBC 3.0 support in iAnywhere JDBC driver • JConnect 6 • IPV6 support File/Directory data via external tables 32 Performance Analysis and Application Profiling Functionality Benefits Robust tool for app and db performance troubleshooting Problem determination for: • Concurrency issues • Pinpointing of queries with suboptimal performance • Server machine capabilities Increased developer productivity Flexible • “Off-line” analysis • Remote machine analysis Decrease risk of performance related issues before deployment Usage Scenarios Performance trouble-shooting tool aimed at 3 different classes of users: • Beginner DBA (wizard-based) • Experienced DBA (wizard and tracing database) • Power-User DBA (attach tracing feature) 33 Performance Analysis and Application Profiling 34 Enhanced Visual Studio 2005 Integration Functionality Benefits SQL Anywhere Explorer • Create connections to SA dbs • Browse contents of tables / columns • Toolbar to launch SA tools • Drag-and-drop operations to populate forms with controls Supports VS 2005 and VS 2003 Installed within VS by default VS developers continue to work in development environment they are comfortable with Leverage existing knowledge of Server Explorer SQL Anywhere developers have easy access to tools within VS environment Usage Scenarios Large Visual Studio developer base with requirement to extend database applications to the “front-lines” Looking for more powerful alternative to SS Mobile / Express May be part of heterogeneous replication environments 35 .NET 2.0 Support Functionality Benefits ADO.NET preferred data access component for .NET apps .NET 2.0 released with VS2005 Jasper includes native SA .NET 2.0 provider SA supports .NET 2.0 and 1.1 DataWindow.NET included Superior performance (native access, no bridge technology required) Supports .NET 2.0 key features Broad Microsoft Windows support (including Windows Mobile) DW.NET provides powerful extensions to VS data grid support Usage Scenarios Existing .NET development shops DataWindow.NET for programmers looking to easily incorporate complex business rules and deliver sophisticated data presentation in their datadriven applications 36 Deployment Wizard Functionality Benefits Easy-to-use SA deployment tool – from list, just “pick and choose” SA components to deploy Generates a Microsoft Windows installer file (.MSI) Provides alternative to other deployment methods (silent, custom-built installs) Developer productivity – minimizes time to embed SQL Anywhere into application Usage Scenarios OEMs that need to embed SQL Anywhere Environments that require hundreds / thousands of deployments 37 UltraLite Enhancements Single file format across all platforms Access from SA admin tools: DBISQL, Sybase Central FIPs-approved security Bigger database support (now 16 million rows per table) Smaller footprint (as small as 300k) when not using SQL Predicates on sync publications Platforms: • Symbian OS 7,8 – Series 60, 80, UIQ 2.0 and 2.1 – C++, AppForge development • Windows Mobile 5 38 UltraLite Enhancements Extended Dynamic SQL and db management • Distinct on aggregates • UNION • constraint names, asc/desc in column lists for fkeys/unique constraints • START AT • Updatable cursors • More properties accessible through functions • Integrated schema (system tables) Complete DDL support AppForge Crossfire support 39 Enhanced Data Management Productivity - enhanced developer productivity tools to decrease implementation time of mission critical frontline applications Performance Analysis and Application profiling Visual Studio Integration .NET 2.0 Support SA Deployment Wizard UltraLite Enhancements Global shared temporary tables Temporary procedures Task based administration Admin tool system wide search capabilities Product wide exception reporting and statistics gathering Internationalization • Extended multi-byte and Unicode character sorting • NCHAR data type Interfaces and Tools • JDBC 3.0 support in iAnywhere JDBC driver • JConnect 6 • IPV6 support File/Directory data via external tables 40 Agenda SQL Anywhere 10 Enhancements • • • • Performance Protection Productivity Innovative Data Movement Release Notes 41 Innovative Data Movement Synchronization Modelling Tool • “ Point-and-click” setup, testing and deployment of synchronization systems Flexibility and Performance • Direct row handling for sync to virtually any data source • Script based uploads for SA (in addition to log scanning) • Global connection scripts • Named parameters in SQL scripts • Download only publications • FIPS approved security option – extended platform support Messaging • Message management and monitoring • Performance improvements and additional API support • Mobile Web services 42 7 Manageability – MobiLink Administration Functionality Benefits New plug-in for Sybase Central Intuitive wizard-based approach to create model of entire sync solution Simulation and testing of sync scenarios Script generation Easy deployment and generation of remote databases Developer productivity - ability to quickly setup and maintain a MobiLink sync environment against all supported consolidated and remote databases Usage Scenarios Fast, easy development of initial synchronization system New users to synchronization Also useful for prototyping, proof-of-concepts, pilot programs that require quick implementation 43 New MobiLink Administration 44 Direct Row Handling on Sync Functionality Benefits Synchronizing to data sources other than supported consolidated dbs Implemented using new MobiLink server APIs for Java and .NET Generates download data, model passes data to MobiLink for delivery to remote device Sync directly without requirement for staging database Flexibility – increases # of potential data sources (relational and non) that can participate in ML sync Leverage existing knowledge • .NET, Java, SQL Usage Scenarios Requirement to sync directly with enterprise systems including: ERP Systems (SAP, Siebel, PeopleSoft, …) Web Servers (IIS, Apache, …), Application Servers (WebLogic, WebSphere …) Legacy Systems (Mainframes, …), Data Warehouses (Sybase IQ, ….) Non-Standard Relational Database (MySQL, Excel, Access, …) Messaging Servers (MQ Series, Netscape Messaging Server, …) etc… 45 Performance Enhancements Functionality Benefits New threading model Initial handshake - decoupling of authentication and data upload Data compression Schema caching Enhanced communication architecture Persistent connections Avoids large uploads if authentication fails Reduces amount of time and cost (when charges apply) of moving data Eliminates redundant data transmission as schema rarely changes Better throughput (performance), error detection, compression, maintainability Usage Scenarios Any MobiLink implementations – small or large – can take advantage of performance gains 46 QAnywhere Message Management and Monitoring Functionality Benefits Sybase Central plug-in • Browse client/server msg store - examine message properties, status, and history • Forward, delete, or export messages • View and modify message store properties • View and create agent command files • View and create transmission rules Better development-time debugging Better runtime exception investigation Usage Scenarios Developers implementing and maintaining messaging solutions using QAnywhere 47 QAnywhere Performance and API Support Functionality Benefits Optimized message overhead Additional API support: • Currently C++ • New SQL stored procedure interface to messaging • New Java API Reduction in amount of data sent (lower cost, better performing applications) More efficient handling of interrupted connections Exposes messaging paradigm to developers more comfortable with SQL / Java Usage Scenarios All developers implementing and maintaining messaging solutions can take advantage of performance improvements SQL shops who want to implement messaging 48 Mobile Web Services Functionality Benefits Built on top of QAnywhere architecture Web services can be invoked from mobile applications using traditional tools and techniques Requests and responses handled by QAnywhere Allows SOA applications to be extended to mobile environments Asynchronous web services with reliability and efficiency over nonpersistent connections Usage Scenarios Integration with backend systems that make use of web services Using web services in an occasionally connected environment 49 Innovative Data Movement Synchronization Modelling Tool • “ Point-and-click” setup, testing and deployment of synchronization systems Flexibility and Performance • Direct row handling for sync to virtually any data source • Script based uploads for SA (in addition to log scanning) • Global connection scripts • Named parameters in SQL scripts • Download only publications • FIPS approved security option – extended platform support Messaging • Message management and monitoring • Performance improvements and additional API support • Mobile Web services 50 7 Agenda SQL Anywhere 10 Enhancements • • • • Performance Protection Productivity Innovative Data Movement Release Notes 51 SQL Anywhere 10 Platform Changes SQL Anywhere • Solaris Sparc, HP-UX, AIX – New 64-bit servers only – 32-bit and 64-bit client support • Mac support - Intel only (no current plans for PPC) • Dropping support – Windows 95/98/ME/NT 4.0 – Compaq TRU64 UltraLite • Adding Symbian Series 60, Series 80, UIQ 2.0 and 2.1 • Dropping MIPS support 52 MobiLink Changes Consolidated Databases Supported • • • • • SQL Anywhere 10 Sybase ASE 12.5.2, 12.5.3, 15 Microsoft SQL Server 2000, 2005 IBM DB2 UDB 8.1 Oracle 9i, 10g 53 SQL Anywhere 10 Database Format Support Prior to V10, new SQL Anywhere releases supported database formats of previous releases In V10, only V10-format databases are supported • Decision made after consultation with many customers • Enables us to offer new features such as Snapshot Isolation • Enables many performance enhancements Important notes • • • • Faster parallelized unload/reload utility will ease migration Application level compatibility will not be affected Older SQL Anywhere clients will continue to work Synchronization compatibility will not be affected 54 Conclusion With version 10 of SQL Anywhere, we have raised the bar once again in providing developers with an underlying data management, synchronization, security, and integration architecture that addresses the complexities unique to frontline environments. QUESTIONS? 55 14 Upgrading to SQL Anywhere 10 Joshua Savill Product Support Analyst, Sybase iAnywhere Joshua.Savill@ianywhere.com Monday, August 7, 2006 2:45 pm - 4:15 pm Objectives for Presentation Overview of how to upgrade current databases and applications to SQL Anywhere 10 Demonstration and explanation of SQL Anywhere tools used during the upgrade process Discuss behaviour changes and considerations during the upgrade process Introduce new features to consider while upgrading 58 Agenda for Presentation Overview of the Upgrade Process Upgrading to SQL Anywhere 10 Upgrading the MobiLink Server Upgrading MobiLink Clients Upgrading UltraLite Upgrading QAnywhere 59 Agenda for Presentation Overview of the Upgrade Process • Components involved in upgrading • Advantages of upgrading • Upgrading best practices Upgrading to SQL Anywhere 10 Upgrading the MobiLink Server Upgrading MobiLink Clients Upgrading UltraLite Upgrading QAnywhere 60 Components to Upgrade Upgrading can involve multiple layers and components • Components may depend or rely on other component being upgraded • Front-end application • Operating system • Hardware • SQL Anywhere software • Database File ( Consolidated/Remote ) MobiLink UltraLite QAnywhere 61 Information on What’s New in SQL Anywhere 10 Could be upgrading from version 5.X, 6.X, 7.X, 8.X, or 9.X to SQL Anywhere 10 Each new release has new features and behavior changes Full details provided in the SQL Anywhere 10.0.0 documentation Additional resources provided in the Technical Support Lounge 62 Advantages of Upgrading Platform support • Operating system support is most current with active supported versions of SQL Anywhere • Upgrading to move from an inactive or archived version onto a supported version ( http://www.ianywhere.com/products/supported_platforms.html ) Performance improvements • Query processing, multi-processor, memory management, improved communications New and enhanced features • Hardware upgrades that can make use of new features – High availability or clustering • • • • Snapshot isolation Materialized views NCHAR data type support Application profiling and diagnostic tracing 63 Upgrading Best Practices Review new behavior changes SQL statements in older versions may not be supported in SQL Anywhere 10 • More restrictive due to ANSI compliance • Coding to a bug • Test upgrading to SQL Anywhere 10 before rolling out Always make a full backup and validate database before and after the upgrade process Benchmark performance • Check the PLAN() function for key queries • Measure performance of application with the database – Start with default database settings, then make changes to improve performance, if necessary 64 Upgrading Best Practices Con’t Revisit performance with upgraded database server • Review how some queries are written to determine efficiency • Index Consultant for suggestions on schema improvements Test application • Fix bugs • Improvements in compliance to standards • Could be unexpected side effects – Application may have been coded to a bug – Reliance on non-static features E.g. Error message text 65 Upgrading Best Practices Con’t Test upgrade procedure in a development environment that is identical to the production environment Verify command line and installation path if multiple versions of SQL Anywhere are installed ( utilities exist in multiple versions ) Review installation plan Upgrading SQL Remote, MobiLink Client, MobiLink Server and UltraLite • These components may have a dependency on SQL Anywhere ( formerly Adaptive Server Anywhere ) • UltraLite may have dependency on MobiLink • Replicate or synchronize all databases before upgrading Upgrading QAnywhere Client • MobiLink and SQL Anywhere upgrade is required 66 Agenda for Presentation Overview of the Upgrade Process Upgrading to SQL Anywhere 10 • New database file format • New feature notes • How to upgrade to SQL Anywhere 10 Upgrading the MobiLink Server Upgrading MobiLink Clients Upgrading UltraLite Upgrading QAnywhere 67 Name Changes Adaptive Server Anywhere SQL Anywhere • Changes to some binary file names – dbmlsrv9.exe mlsrv10.exe • Environment variable name changes – ASANY9 SQLANY10 • Driver name changes – .NET, OLE-DB, Perl DBD Provider/Driver renamed • Default installation directory changed to SQL Anywhere 10 • Sample database name, data and schema changed ( demo.db ) • Unix/Linux configuration script asa_config.sh renamed to sa_config.sh 68 New Database File Format Requires that database files be rebuilt using the Unload utility ( dbunload.exe ) Old database file formats cannot be started on a SQL Anywhere 10 engine New file format allows for new features that cannot be implemented with the older format • Snapshot isolation • Improved Unicode data support • BLOB performance enhancements More flexibility in adding new features • Catalog, fixed-length columns, concurrency, international support Performance • Support added for parallelism to improve performance – Using multiple processors for processing a single query 69 New Database File Format Reduced code complexity • More efficient code in the database server – Increased stability as code line is more efficient • Easier to maintain code line and ability to add new feature not capable when supporting old database file formats The Upgrade utility ( dbupgrad.exe ) will not be shipped with SQL Anywhere 10 The Unload utility will be able to read older file formats • The upgrade process will include a special engine for the Unload utility to read older databases ( dbunlspt.exe ) 70 Catalog and Reserve Word Changes Catalog changes • Catalog names now start with an I ( ISYSFILE, ISYSOPTION ) • Benefits – More Efficient/Faster to access – Flexibility for updating catalog without affecting applications – Compatibility views for previous catalog included • Applications relying on following may need to change – SYSINFO*, SYSATTRIBUTES, *SYSCOLLATION, *SYSCOLLATIONMAPPINGS, *SYSUSERPERMS, *SYSUSERPERM *Deprecated Catalog table names have changed, but views for backwards compatibility Additional reserved words for SQL Anywhere 10 • Caution needs to be taken if reserved words are used in scripts 71 International Language Support Support for international languages has been enhanced • International Components for Unicode ( ICU ) libraries introduced • Unicode Collation Algorithm ( UCA ) added for sorting the entire Unicode character set – More CPU intensive, but can sort most languages in an appropriate order New NCHAR support added • Used to store Unicode character data up to 8191 characters in length • NVARCHAR ( 8191 characters maximum ) and LONG NVARCHAR ( 2 GB maximum ) • Default collation is UCA 72 Database Collation Additions New database collation added • Norwegian 1252NOR, default on Norwegian Windows systems • UTF8BIN added for improved sorting of binary data – UTF8 deprecated The Collation utility has been deprecated • DBCollate function and dbcollat.exe removed • Creation of custom collations is no longer supported • Custom collations are preserved in the database when upgrading Affects on existing applications • SORTKEY functionality is still supported • COMPARE functionality is still supported • Deployment of ICU library may require addition files in the deployment list 73 ANSI Compliance SQL Anywhere 10 complies completely with the SQL-92-based United States Federal Information Processing Standard Publication ( FIPS PUB ) 127 With minor exceptions, SQL Anywhere 10 complies with ISO/ANSI SQL-2003 core specifications Substring() function now conforms to ISO/ANSI SQL-2003 • Negative or zero start offset is now treated as if the string is padded on the left with non-characters • Gives an error if negative length is provided • ansi_substring option provided for compatibility Integer overflow now produces a SQLSTATE = 22003 overflow to conform to ISO/ANSI SQL-2003 • ansi_integer_overflow option provided for compatibility 74 ANSI Compliance string_rtruncation option default is changed to ON • Data truncation by database engine now causes error by default Further ANSI compliance questions are welcomed in the Technical Support Lounge 75 Java Virtual Machine Enhancements Initialized databases are always Java enabled iAnywhere Virtual Machine deprecated • Previously SQL Anywhere shipped an iAnywhere Virtual Machine • SQL Anywhere 10 uses an external VM – External VM will run in its own process space – Java logic not affected – Can make use of any external Java VM • Benefits – Expected better performance – Immediate support of new versions of Java – No longer a separate key to install • New options – java_location ( no default ) – Java_main_userid ( default dba ) 76 Connection and Security iAnywhere JDBC driver supports JDBC 3.0 jConnect 5.5 and 6.0 are shipped with SQL Anywhere 10 • jConnect 4.5 is no longer supported Support for IPv6 on Windows XP, Windows 2003, and Linux -sc switch for C2 security is no longer supported • Common Criteria is more comprehensive/up-to-date • Named Pipes no longer supported RSA now included with SQL Anywhere 10 Enhancements to FIPS support 77 Target Platform Support Platforms Targeted in SQL Anywhere 10 • Windows 2000, XP, 2003 – Remove support for Windows NT 4.0, 95, 98, ME • Linux Kernel minimum 2.6.5 • Solaris 8, 9 and 10 – Solaris 7 not supported • NetWare 5.1 (sp6), 6.0 (sp3) and 6.5 • Mac OS X PPC replaced in favour of Mac Intel • Windows CE 3.0, 4.1, 4.2, Windows Mobile 5.0 • Support for 486 chipset removed • 64-bit Database Servers on AIX, HPUX and Solaris in place of the 32-bit servers 78 How to Upgrade to SQL Anywhere 10 Backup and validate the existing database Shutdown all other SQL Anywhere database servers The Unload utility or Unload Database wizard will rebuild the database file format into SQL Anywhere 10 79 Upgrade Restrictions Recommend to disconnect from any earlier versions of the database server and shut all other database servers Do not include the ENG, START, or LINKS connection parameters in the dbunload connection string or enter the Server Name and Start Line fields in Sybase Central connection dialog box The Unload utility must be run on the same machine where the database file is located as a shared memory connection is required Environment variables SATMP and ASTMP must be set to the same value, or not set at all Netware database need to be rebuilt on a Windows or Unix machine 80 Special Considerations Passwords in newly created SQL Anywhere 10 database are case sensitive regardless of case-sensitivity of the database Rebuilding an existing database, case sensitivity of the database is as follows • If password was originally entered in case-insensitive database, password remains case-insensitive • If password was originally entered in case-sensitive database, uppercase and mixed case passwords remain case-sensitive, lowercase passwords become case-insensitive • Newly created passwords are case-sensitive Default pages size is 4096 bytes Collations from old database are unloaded and reused unless otherwise specified 81 Rebuilding into SQL Anywhere 10 The Unload Database wizard in Sybase Central The Unload utility Ability to create a new database, replace the existing database with the new file format, or unload the database to flat files Required to rebuild the database into SQL Anywhere 10 82 The Unload Database Wizard in Sybase Central Starting the Unload Database wizard • Start Sybase Central and click ‘Prepare a Version 9 or Earlier Database for SQL Anywhere 10’ or select Tools SQL Anywhere 10 Unload Database • Demo on how to use the Unload Database wizard in Sybase Central 83 The Unload Utility ( dbunload.exe ) Not all dbunload options apply when upgrading the database to SQL Anywhere 10 -c • Specifies connection parameters for the source database • For upgrading the database do not use the ENG, START, or LINKS connection parameters • The user ID supplied needs to be DBA authority -an <filename> • Creates a new SQL Anywhere 10 database from the existing database ( original database file is preserved ) • Initialization options are not changed during the rebuild 84 The Unload Utility Con’t • When rebuild is complete, new dbspaces will have the extension .dbR • This option does not preserve the offsets for replication or synchronization -ar <directory> • Creates a new SQL Anywhere database to replace the existing database ( original database file is not preserved ) • The directory name provided must contain the old transaction logs for replication or synchronization • When rebuild is complete, new dbspaces will have the extension .dbR • This option preserves the offsets for replication or synchronization • When rebuilding an encrypted database, the encryption key for the original and new database must be the same 85 The Unload Utility Con’t -o <filename> • Writes output messages to the supplied file name -r <[directory\]filename> • Modify the name and directory of generated reload script file -v • Displays verbose output during the database unload – Name of the tables being unloaded – Number of rows being unloaded 86 Upgrading to SQL Anywhere 10 Examples Example # 1 dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” -ar c:\temp In current directory before running dbunload: asademo.db asademo.log In current directory after running dbunload: asademo.db 87 Upgrading to SQL Anywhere 10 Examples Con’t Example # 2 dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” -an c:\newdb\newdb.db In current directory before running dbunload: asademo.db dbspace1.db asademo.log In newdb directory after running dbunload: newdb.db newdb.log 88 Upgrading to SQL Anywhere 10 Examples Con’t In current directory after running dbunload: asademo.db dbspace1.db asademo.log dbspace1.dbR 89 Upgrading to SQL Anywhere 10 Examples Con’t Example # 3 dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” c:\backup In the current directory before running dbunload: asademo.db asademo.log In the current directory after running dbunload: asademo.db asademo.log reload.sql \backup\*.dat 90 Upgrading to SQL Anywhere 10 Examples Con’t dbinit newdb.db dbisql -c “UID=dba;PWD=sql;DBF=newdb.db” reload.sql In the current directory after running dbinit and dbisql: asademo.db asademo.log newdb.db newdb.log The reload.sql and \backup\*.dat files can be removed 91 Agenda for Presentation Overview of the Upgrade Process Upgrading to SQL Anywhere 10 Upgrading the MobiLink Server • Consideration during upgrade • Upgrading the consolidated database • New feature notes Upgrading MobiLink Clients Upgrading UltraLite Upgrading QAnywhere 92 MobiLink Upgrade Process Dependent on whether the database file will be new or upgraded Often customers deploy a new application with a new synchronization environment Typically upgrades are done in stages/phases • Script versioning to accommodate an upgrade in stages/phases Important to have all remote databases synchronized before starting the upgrade process Validate and backup the database before staring upgrade process Test the upgrade process in an environment that is equivalent to the production environment 93 Upgrading the Consolidated Database Setup script required to run on consolidated database before being upgraded ( including SQL Anywhere 10 database ) • Appropriate upgrade script can be found in the %SQLANY10%\MobiLink\upgrade\ directory • Newly created consolidated database require the appropriate setup script found in the %SQLANY10%\MobiLink\setup\ directory – By default, MobiLink system tables are no longer created in the database during initialization Ability to use a user other than the DBA to start the MobiLink server • Grant permission to the user on the necessary MobiLink system tables 94 MobiLink System Table Changes New MobiLink server system tables and schema • ml_database, ml_column, and ml_qa_clients system tables added • Altered schema to the ml_subscription, ml_user, ml_script, ml_listening and ml_sis_sync_state tables New ways to clean up the MobiLink system tables on the consolidated database • ml_delete_sync_state_before system procedure added – Purges information about obsolete remote databases • ml_delete_sync_state system procedure added – Deletes unused or unwanted synchronization state information • ml_reset_sync_state system procedure added – Resets synchronization state information 95 MobiLink Server Changes MobiLink server name has changed from dbmlsrv9 to mlsrv10 • Many MobiLink utilities have dropped the db and added ml if there was no ml already in the name • MobiLink DLLs have also changed naming conventions Compatibility with existing software • SQL Anywhere 10 MobiLink server has the ability to synchronize with version 8, 9 and 10 clients • mlsrv10 -xo option needed to synchronize version 8 and 9 clients Options for setting cache size are deprecated ( -bc, -d, -dd, -u ) • Replaced with the mlsrv10 -cm option 96 Script Changes upload_cursor, new_row_cursor, old_row_cursor scripts are deprecated and replaced with statement based uploads Statement based uploads are easier to understand for most developers and offer better ODBC driver support • Better performance with statement based scripts New MobiLink Create Synchronization Model wizard generates scripts • • • • • Script generation with timestamps Shadow table generation Deployment features GUI for column mappings Automatic script generation with the -za and -ze options has been deprecated 97 Script Changes Unrecognized scripts will now cause synchronization to fail • Unrecognized table-level or connection-level scripts • Presence of cursor-based upload scripts Errors in upload or download scripts will now cause synchronization to fail When a begin script is called, the corresponding end script is called regardless of the success of synchronization Upload scripts are not called for a table when there is no data to synchronize Global script version added • Can define a script that is automatically used in all synchronizations unless another script is specified • Avoids duplicate connection level scripts 98 Script Changes Named script parameters can now be used • Can use predefined named parameters or create user defined named parameters For Example: Select * from worktable where last_modified > { ml s.last_download } and owner = { ml s.username }; Instead of the following: Select * from worktable where last_modified > ? and owner = ? 99 Script Changes Using SQL Anywhere 10 and Microsoft SQL Server 2005 consolidated databases, the isolation level should not be changed in the begin_connection script • Default isolation level for downloads is now snapshot • Changes to the isolation level for downloads should be in the begin_download script or using the new mlsrv10 -dsd option to disable snapshot isolation • Changing the isolation level in the begin_connection script is still good practice for consolidated databases that do not use snapshot isolation 100 Protocol Enhancements Changes to protocol names and options for network security • -x https_fips changed to -x https(fips=y;...) – HTTPS with FIPS • -x rsa_tls changed to -x tls(tls_type=rsa;...) – TCP/IP with TLS using RSA encryption • -x rsa_tls_fips changed to -x tls(tls_type=rsa;fips=y;...) – TCP/IP with TLS using RSA encryption and FIPS • -x ecc_tls changed to -x tls(tls_type=ecc;...) – TCP/IP with TLS using ECC encryption • -x tcpip(security=...) changed to -x tcpip – TCP/IP • -x http(security=...) changed to -x http – HTTP 101 Error Handling handle_error and handle_odbc_error events are more restrictive • Called only when an ODBC error occurs while MobiLink is processing an insert, update, or delete script during the upload transaction, or is fetching download rows • If an ODBC error occurs during other times of the synchronization, the MobiLink server will call the report_error or report_odbc_error script and abort the synchronization 102 Target Consolidated Platform Support Targeted Consolidated Database Vendors • SQL Anywhere 10 • Sybase ASE 12.5.2, 12.5.3, 15.0 – Windows, Linux • Microsoft SQL Server 2000, 2005 • Oracle 9i and 10g – Linux, Windows, Solaris • IBM DB2 UDB 8.1 – AIX, Linux, Windows 103 Suggested ODBC Drivers Sybase ASE and IBM DB2 ODBC Drivers are not shipped with SQL Anywhere 10 • DB2 and ASE Version 12.5.3 and above include ODBC drivers, which are the recommended drivers Oracle ODBC Drivers • Data Direct driver ( Wire Protocol ) will be available for download for the SQL Anywhere 10 GA release • New iAnywhere Solutions 10 - Oracle ODBC Driver is being developed and will be available after the SQL Anywhere 10 GA release Recommended Drivers: ( http://www.ianywhere.com/developer/technotes/odbc_mobilink.html ) 104 Preparation Review upload scripts and remove any upload cursor scripts • Replace with statement based upload scripts Review database schema to determine if changes are needed in the synchronization definitions Review the script versions and determine if there needs to be changes • New script versions are recommended if synchronizing older client ( version 8 or 9 ) with version 10 clients If moving from version 7, review address parameter ordering Evaluate binary name changes and ensure the proper version of the utilities are being used Test all scripts prior to upgrading to the new version 105 Execution Plan Stop the MobiLink server running on the consolidated database Backup and validate the consolidated database Identify the consolidated database type ( Oracle, IBM DB2, SQL Anywhere, etc ) Execute the appropriate upgrade script in the upgrade folder • E.g. %SQLANY10%\MobiLink\upgrade\9.0.0\upgrade_ora.sql if running an Oracle consolidated with version 9.0.0 • Note DB2 has special requirements Upgrade the consolidated database Make any script changes based on the preparation items Assemble command line based on the preparation Start the MobiLink server with the appropriate command line 106 Agenda for Presentation Overview of the Upgrade Process Upgrading to SQL Anywhere 10 Upgrading the MobiLink Server Upgrading MobiLink Clients • Consideration for upgrade • New feature notes • Upgrading remote databases Upgrading UltraLite Upgrading QAnywhere 107 MobiLink Clients Upgrade Process Upgrading the software • Recommended to upgrade the MobiLink client and SQL Anywhere database at the same time – Remote database must be upgraded before running the new dbmlsync utility for SQL Anywhere 10 Upgrading the remote database • Synchronize all outstanding data • Rebuilding the database into SQL Anywhere 10 • Schema changes or significant database changes will require a manual rebuild of the remote database 108 User Name and Remote IDs MobiLink user names and remote IDs • Unique remote IDs are now created for each remote database involved in synchronization – MobiLink user name no longer needs to be unique – MobiLink user name can now be considered a true user name for authentication 109 Deprecated Behaviour Download error hooks deprecated • sp_hook_dbmlsync_fatal_sql_error and sp_hook_dbmlsync_sql_error have been removed Version 7 syntax and utilities have been deprecated • • • • MobiLink client database extraction utility ( mlxtract ) CREATE SYNCHRONIZATION SITE statement CREATE SYNCHRONIZATION DEFINITION statement CREATE SYNCHRONIZATION TEMPLATE statement 110 Preparation Review database schema to determine how to upgrade the database • No schema changes, the remote database can be upgraded using the Unload utility • Schema changes or significant database changes will require the database be manually upgraded Review the script versions used by the remote database • May need multiple script versions if planning to synchronize older clients Evaluate binary name changes and ensure the proper version of the utilities are being used Test all scripts prior to upgrading to the new version 111 Execution Plan 1 Creating a new remote database if schema change or significant database changes are required • Start with an existing SQL Anywhere database, or create a new one and add the necessary tables • Create one or more publications in the remote database – CREATE PUBLICATION statement • Create the MobiLink users in the remote database – CREATE SYNCHRONIZATION USER statement • Register users with the consolidated database – mluser authentication utility • Subscribe MobiLink users to one or more of the publications – CREATE SYNCHRONIZATION SUBSCRIPTION statement 112 Execution Plan 2 Upgrading using the Unload utility to rebuild the database into SQL Anywhere 10 • All data should to be synchronized before upgrading the database • Backup and validate the database before upgrading dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” -ar c:\temp MobiLink remote databases require the -ar option to automatically rebuild the database • Transaction log offsets need to be preserved for synchronization purposes • Extremely important to backup and validate the database before attempting an upgrade – Automatic rebuild will replace the existing database file 113 Execution Plan 3 Upgrading using the Unload utility to rebuild the database into SQL Anywhere 10 but manually preserving the transaction log offset • • Perform a successful synchronization, validate and backup the remote database Run the dbtran.exe utility to display the starting offset and ending offset of the database transaction log – • Rename the transaction log and ensure that it is not modified during the unload process – • • Make note of the ending offset as it is required Move the renamed log file to a secure location, such as an offline directory Unload the database Initialize a new database 114 Execution Plan 3 Con’t • • • • Reload the data into the new database Shut down the new database Erase the transaction log of the new database Run dblog.exe on the new database to reset the transaction log offsets – Use -z to specify the ending offset that was recorded – Use -x to set the relative offset to zero E.g. dblog -x 0 -z 137829 database-name.db • Start dbmlsync, specifying the location of the original log file that was moved to the secure location • When the old transaction logs are no longer needed, set the database option delete_old_logs 115 Upgrading SQL Remote SQL Anywhere 10 replication will work pre-SQL Anywhere 10 SQL Remote clients provided new data types are not introduced in the system ( NCHAR ) Recommend to migrate to MobiLink if using SQL Remote for ASE ( http://www.ianywhere.com/whitepapers/migrate_to_ml.html ) SQL Remote for ASE is EOL’d ( http://www.ianywhere.com/developer/eol/sql_remote_ase_160505.html ) Any further questions regarding the SQL Remote upgrade can be answered in the Technical Support Lounge 116 Agenda for Presentation Overview of the Upgrade Process Upgrading to SQL Anywhere 10 Upgrading the MobiLink Server Upgrading MobiLink Clients Upgrading UltraLite • Considerations for upgrade • New feature notes • API changes Upgrading QAnywhere 117 UltraLite Upgrade Process Most UltraLite database upgrades occur with application upgrades • Synchronize previous application • Deploy new application and database Schema files are no longer used • • • • • Can deploy database file with application Deploy database file through mlfiletransfer.exe Call CreateDatabase function and execute DDL Plan for non-synchronizing tables Database creation function/method needs to be added – Remove all schema upgrade code and schema file reference code 118 Advantages of UltraLite Upgrade Increased database limits • Maximum number of rows in a table increased to 16 million Integrated schema • UltraLite is now a standalone RDBMS and no longer requires a separate schema file to define logical structure of the database • UltraLite database can now be created directly Increased database performance and data integrity Indexes may utilize hashing • Hash size can be specified on a per-index basis • Improved performance for index lookups Checksum validation of the database added Extended BLOB support • Ability to update, cast data types, and get the length of BLOBs 119 Advantages of UltraLite Upgrade Con’t Palm support for network_leave_open • Palm devices can choose whether network connectivity stays open after synchronization Configurable and increased default cache size for HotSync conduit synchronization • Default cache size ( on desktop ) for UltraLite conduit increased to 4 MB • Improves synchronization time by reducing unnecessary file I/O Improved MobiLink client network layer • Synchronization compression is available for all protocols • Persistent connections • Resumable synchronization 120 Advantages of UltraLite Upgrade Con’t • Introduction of IPv6 support • Improved error detection and debugging Set table order for synchronization • Ability to specify table ordering to avoid referential integrity issues during table upload 121 Upgrading UltraLite Database Upgrading database on desktop • ulunloadold – exports XML from version 9 .udb or .usm • ulload – creates a new database and loads in the XML • Sybase Central Upgrade wizard can be used Creating new databases • No longer a separate Unicode runtime • Sybase Central wizard can be use to set the options Can now use graphical tools • Sybase Central now supports UltraLite • Interactive SQL now supports UltraLite 122 UltraLite Applications: C/C++ Static APIs IN • Focus on standards-based interfaces going forward OUT - Static APIs • ESQL applications can be easily migrated – Simpler build process as SQL Anywhere is no longer required – Review SQL used as UltraLite must now support it – sqlpp -u generates UltraLite code • Static C++ API based applications can migrate to the C++ component – Sybase Central includes Migrate C++ Utility 123 UltraLite Applications: APIs Keeping pace with mobile application environment IN • Symbian OS ( C++ and Crossfire ) • C/C++, m-Business Anywhere, or Crossfire are recommended for cross-platform development • Windows Mobile 5.0 OUT • Palm 3.x • Static Java, Native UltraLite for Java, and ActiveX interfaces • .NET iAnywhere.UltraLite namespace in favor for iAnywhere.Data.UltraLite namespace Synchronization code • Secure synchronization streams are now all separate ( no security 124 parameters ) Name Changes Name changes for command-line utilities • dbuleng9.exe has been renamed to uleng10.exe • dbulstop.exe has been renamed to ulstop.exe • dbcond9.exe has been renamed to ulcond10.exe Any further questions regarding the UltraLite upgrade can be answered in the Technical Support Lounge 125 Agenda for Presentation Overview of the Upgrade Process Upgrading to SQL Anywhere 10 Upgrading the MobiLink Server Upgrading MobiLink Clients Upgrading UltraLite Upgrading QAnywhere • What is QAnywhere? • Considerations for upgrade 126 What is QAnywhere? Application-to-application messaging system • Store-and-forward nature of messaging – Messages can be constructed even when destination application is not reachable over the network • Network-independent communication Provides messaging between mobile devices or between mobile devices and the enterprise Permits seamless communication with other messaging systems that have a JMS interface • Integration with J2EE application 127 Upgrading QAnywhere The QAnywhere Message Server can communicate with older QAnywhere message agents using the -xo option The QAnywhere Message Server upgrade process is identical to that of the MobiLink Server To upgrade the QAnywhere Message Agent • Required to upgrade the message store and this process is identical to that to the MobiLink Client coupled with the -su switch on the qaagent • qaagent -sur is offered to simplified means to the above Transaction log is no longer used or maintained New option for setting up failover Persistent connections are introduced 128 Upgrading QAnywhere Con’t qaagent -port deprecated • The -port option specified a port number on which QAnywhere Agent listened for communications from the listener qaagent -la_port replaced • The -la_port option has been replaced by the -lp option qaagent -push_notifications is renamed • Now called -push getPropertyNames replaced • The getPropertyNames function has been replaced with the beginEnumPropertyNames, nextPropertyName, and endEnumPropertyNames functions Any further questions regarding the QAnywhere upgrade can be answered in the Technical Support Lounge 129 Questions Questions? 130 Application Development with SQL Anywhere for .NET Bill Hillis Senior Manager - Engineering, Sybase iAnywhere hillis@ianywhere.com Monday, August 7, 2006 4:30 pm – 6:00 pm Agenda Introduction to .NET SQL Anywhere and ADO.NET Visual Studio Integration What’s new in SQL Anywhere 10 133 .NET: Definition .NET technology enables the creation and use of XML-based applications, processes, and Web sites as services that share and combine information and functionality with each other by design, on any platform or smart device, to provide tailored solutions for organizations and individual people. .NET is a comprehensive family of products, built on industry and Internet standards, that provide for each aspect of developing (tools), managing (servers), using (building block services and smart clients) and experiencing (rich user experiences) Web services. http://www.microsoft.com/net/basics/faq.asp 134 .NET Framework Infrastructure for the overall .NET platform Common Language Runtime (CLR) • Managed, protected application execution environment • C#, Visual Basic.NET, C++, J#, … Common Class Libraries • Windows Forms, ADO.NET, ASP.NET,… .NET Compact Framework • Subset of .NET Framework for smart devices • Part of Visual Studio.NET 2003 • Included on device with CE.NET (CE 4.1), add-on for older devices 135 .NET: Managed Code Code is written in desired language (C++, C#, VB.NET, Pascal, etc.) Compiled into Microsoft Intermediate Language (MSIL) At runtime Common Language Runtime (CLR) compiles the MSIL code and executes it 136 .NET Terms Namespace • “A logical naming scheme for grouping related types” • Analogous to Java packages • iAnywhere.Data.SQLAnywhere.SAConnection iAnywhere.Data.SQLAnywhere is the namespace Assembly • “A collection of one or more files that are versioned and deployed as a unit” • DLLs in .NET-land • Unlike DLLs, .NET assemblies also include version control/security information GAC (Global Assembly Cache) • “A machine-wide code cache that stores assemblies specifically installed to be shared by many applications on the computer” 137 What is ADO.NET? Microsoft’s latest data access API • ODBC, DAO, RDO, OLE DB, ADO Implements System.Data namespace “Data providers” manage access to data stores Providers from Microsoft: • System.Data.OleDb • System.Data.Odbc • System.Data.SQLClient • System.Data.OracleClient “Managed provider” “Data provider” 138 ADO.NET Interfaces Each data provider implements the following classes: • • • • Connection – connects to data source Command – executes commands DataReader – forward-only, read-only access to data DataAdapter – fills DataSet and handles updates • Parameter – parameter to a Command object • Transaction – provides commit/rollback functionality • Error, Exception – collect error/warning messages 139 Agenda Introduction to .NET SQL Anywhere and ADO.NET Visual Studio Integration What’s new in SQL Anywhere 10 140 SQL Anywhere Interfaces ODBC ESQL OLEDB Open Client JDBC Perl PHP … ADO.NET 141 SQL Anywhere Data Provider Implements iAnywhere.Data.SQLAnywhere namespace • • • • • SAConnection SACommand SADataReader SADataAdapter etc. Supports Windows (.NET framework) and Windows CE (.NET compact framework) Also support 64-bit Windows 142 SQL Anywhere Data Provider in v8, v9 The namespace was changed for SQL Anywhere 10 Previously iAnywhere.Data.AsaClient namespace • • • • • AsaConnection AsaCommand AsaDataReader AsaDataAdapter etc. Available since 8.0.2.4122 (March 2003) 143 ADO.NET Data Providers For SQL Anywhere OLEDB ODBC SQL Anywhere iAnywhere.Data.SQLAnywhere System.Data.Oledb System.Data.Odbc SA OLEDB Driver SA ODBC Driver SQL Anywhere 144 Example using DataReader (C#) SAConnection conn = new SAConnection( “dsn=SQL Anywhere 10 Demo” ); conn.Open(); SACommand cmd = new SACommand( “select GivenName from Employees”, conn ); SADataReader reader = cmd.ExecuteReader(); while( reader.Read() ) { str = reader.GetString( 0 ); Console.WriteLine( str ); } reader.Close(); conn.Close(); 145 Example using DataAdapter (VB.NET) Dim conn As New iAnywhere.Data.SQLAnywhere.SAConnection() conn.ConnectionString = “dsn=SQL Anywhere 10 Demo" conn.Open() Dim ds As New DataSet() Dim da As New SADataAdapter ("select * from Employees", conn) da.Fill(ds, "Employees") DGEmployees.DataSource = ds DGEmployees.DataMember = "Employees" 146 Using the SQL Anywhere Data Provider Use Visual Studio.NET (VS.NET 2003 or 2005 preferred) Reference the provider in your project (required) • Project menu, Add Reference • In the .NET tab, find iAnywhere.Data.SQLAnywhere.dll • If the provider is not listed, find it in %SQLANY10%\Assembly Reference provider in your code (optional) • Allows you to use SQL Anywhere provider classes without namespace prefix • C#: using iAnywhere.Data.SQLAnywhere • VB.NET: Imports iAnywhere.Data.SQLAnywhere 147 SQL Anywhere ADO.NET Data Provider Classes • SAConnection • SAError • SAException • • • • SACommand SAParameter SADataReader SADataAdapter • • • • SACommandBuilder SAErrorCollection SAInfoMessageEventArgs SAParameterCollection Classes (continued) – – – – – SAPermission SAPermissionAttribute SARowUpdatedEventArgs SARowUpdatingEventArgs SATransaction Enumerations – SADbType Delegates – SAInfoMessageEventHandler – SARowUpdatedEventHandler – SARowUpdatingEventHandler 148 ADO.NET Application Tasks Connecting Error handling Executing SQL Retrieving data Transactions Disconnected result sets 149 Connecting SAConnection • Represents a connection to a SQL Anywhere database • Uses normal SA connection strings • Optional use of event handlers (InfoMessage, StateChange) 150 Connection Example using iAnywhere.Data.SQLAnywhere; private SAConnection myConn; myConn = new iAnywhere.Data.SQLAnywhere.SAConnection(); myConn.ConnectionString = "Data Source=SQL Anywhere 10 Demo;UID=DBA;PWD=sql”; myConn.Open(); … myConn.Close(); 151 Connection Pooling ADO.NET spec dictates that connection pooling be enabled by default • Even on Windows CE! • Disable in connection string: POOLING=false SQL Anywhere server may not auto-stop with pooling enabled • Connection object must be destroyed first myConn.ConnectionString = “POOLING=FALSE;Data Source=SQL Anywhere 10 Demo;UID=DBA;PWD=sql"; 152 Error Handling SAException • Thrown by a failed statement (try/catch) • Message parameter contains error message • Errors property is a collection of SAError objects SAError • More detailed SQL Anywhere-specific error information • Message, NativeError, Source, SqlState 153 Errors and Exceptions Example try { myConn = new SAConnection( "Data Source=SQL Anywhere 10 Demo” ); myConn.Open(); } catch( SAException ex ) { MessageBox.Show( ex.Errors[0].Source + " : " + ex.Errors[0].Message + " (" + ex.Errors[0].NativeError.ToString() + ")", "Failed to connect" ); } 154 Demo: 155 Executing SQL SACommand • Represents a SQL statement or stored procedure that is executed against a SQL Anywhere database • Parameter property is a collection of SAParameter objects Multiple methods to execute your SQL • ExecuteNonQuery (returns a row count) • ExecuteReader (returns result set – DataReader) • ExecuteScalar (returns a single value – column 1, row 1) Stored procedures • Use the name of the procedure as the statement (no “call” or “exec”) • Set the CommandType property to StoredProcedure 156 SACommand Example SAConnection myConn; SACommand myCmd; int num_depts; myConn = new SAConnection( “ENG=demo10;UID=DBA;PWD=sql"; myConn.Open(); myCmd = new SACommand( "select count(*) from Department", myConn ); num_depts = (int) myCmd.ExecuteScalar(); 157 Retrieving Data SADataReader • Read-only, forward-only result set from a query or stored procedure (rows are fetched as needed) • GetXXX methods to get column value as specific data types • Read method moves to next row SADataAdapter • Used to fill a DataSet; fetches all rows and closes cursor • More on this later… 158 DataReader Example SACommand cmd = new SACommand( "select DepartmentId, DepartmentName from Departments",myConn); SADataReader reader; reader = cmd.ExecuteReader(); while( reader.Read() ) { int id = reader.GetInt32(0); string name = reader.GetString(1); MessageBox.Show( “Id: " + id + "\nName: " + name ); } reader.Close(); 159 DataReader Example – BLOBs SACommand cmd = new SACommand( "select bitmap from images where id = 1", myConn); SADataReader reader = cmd.ExecuteReader(); if( reader.Read() ) { // get the length of the BLOB by passing a NULL buffer long len = reader.GetBytes(0, 0, null, 0, 0); byte bitmap[] = new byte[len]; // get the BLOB reader.GetBytes(0, 0, bitmap, 0, (int)len); } reader.Close(); 160 Demo: 161 Transactions SATransaction • Represents a SQL transaction • Returned by SAConnection.BeginTransaction() • Commit, Rollback methods • IsolationLevel property 162 Autocommit Autocommit is on by default in ADO.NET • Disable by explicitly using an SATransaction myTran = myConn.BeginTransaction(); myCmd = new SACommmand( “call sp_update_some_data()”, myConn, myTran ); myCmd.ExecuteNonQuery(); … myTran.Commit(); 163 Disconnected Result Sets ADO.NET DataSet (System.Data.DataSet) • Disconnected data access • In-memory cache of data retrieved from database • A collection of DataTables which consist of: – DataRow (data) – DataColumn (schema) – DataRelation (relate DataTables via DataColumns) • Can read/write data/schema as XML documents • Works with data providers to load and modify data using the provider’s DataAdapter 164 SADataAdapter SADataAdapter • Represents a set of commands and a database connection used to fill a DataSet and to update a database • Fill method fetches all rows and closes cursor • Update method applies changes to DataSet to database (beware of ConcurrencyException!) • SelectCommand, InsertCommand, UpdateCommand, DeleteCommand properties SACommandBuilder • Attached to an SADataAdapter • Given a SELECT statement, generates corresponding INSERT/UPDATE/DELETE statements 165 DataAdapter Example SADataAdapter da; SACommandBuilder cb; DataSet ds; da = new SADataAdapter("select * from product", conn ); cb = new SACommandBuilder(da); ds = new DataSet(); da.Fill(ds, "product"); ... da.Update(ds, "product“ ); 166 Demo: 167 Application Deployment SQL Anywhere ADO.NET Provider has two files • iAnywhere.Data.SQLAnywhere.dll (managed code) • dbdata10.dll (native code) Both files must be deployed • Version of files (i.e. build number) must match • iAnywhere.Data.SQLAnywhere.dll will throw error if versions don’t match iAnywhere.Data.SQLAnywhere.dll Your Application .NET Common Language Runtime dbdata10.dll SQL Anywhere 168 Updating the SQL Anywhere Provider At compile time, .NET compilers use strong name of referenced assemblies • Strong name includes both name AND version • Microsoft’s attempt to eliminate “DLL hell” At run time, .NET looks for assemblies based on strong name An application compiled with iAnywhere.Data.SQLAnywhere version 10.0.0.1234 will only run with version 10.0.0.1234 UNLESS you have a publisher policy file in place 169 Publisher Policy Files Policy files redirect one version of an assembly to another Installed into GAC SQL Anywhere EBFs install policy files, for example: • Application built against 10.0.0.1000 • EBF applied to machine; upgrade to 10.0.1.1883 – EBF installs policy file – Requests for 10.0.0.0 – 10.0.1.1883 redirected to 10.0.1.1883 • %SQLANY10%\Assembly\V2\iAnywhere.Data.SQLAnywhere.dll.config Security is built-in to policy files • Policy files cannot be compiled without private key assembly was signed with • Only iAnywhere can create policy files for iAnywhere assemblies 170 Example Policy File <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoftcom:asm.v1"> <dependentAssembly> <assemblyIdentity name="iAnywhere.Data.SQLAnywhere" publicKeyToken="f222fc4333e0d400" /> <bindingRedirect oldVersion=“10.0.0.0-10.0.1.1883" newVersion=“10.0.1.1883" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> 171 Application Deployment: Win32 Files can go anywhere, but typically in <%SQLANY10%>\Assembly\V2 iAnywhere.Data.SQLAnywhere.dll policy.iAnywhere.Data.SQLAnywhere.dll • Register with gacutil.exe (shipped with .NET) dbdata10.dll dblgen10.dll • No registration required 172 Application Deployment: Windows CE One iAnywhere.Data.SQLAnywhere.dll for all CE platforms • • • • But, separate versions for .NET 1.x and 2.0 Deploy to the Windows or application directory Visual Studio.NET will deploy automatically Make sure to use the CE version of the DLLs! Separate dbdata10.dll for each CE platform • In %SQLANY10%\ce\xxx • Can go in Windows directory or your application’s directory on the device Policy files are not supported by .NET Compact Framework • .NET will automatically use newest version of iAnywhere.Data.SQLAnywhere.dll that it finds 173 Agenda Introduction to .NET SQL Anywhere and ADO.NET Visual Studio Integration What’s new in SQL Anywhere 10 174 Visual Studio Integration Added in 9.0.2 (November 2004) Described in white paper • www.ianywhere.com/downloads /whitepapers/integrate_vs.pdf Adds 3 icons to the toolbar Enables developers to be more productive SQL Anywhere Explorer added in November 2005 175 Visual Studio Integration Demo 176 Agenda Introduction to .NET SQL Anywhere and ADO.NET Visual Studio Integration What’s new in SQL Anywhere 10 177 What’s New in SQL Anywhere 10 Namespace is renamed iAnywhere.Data.SQLAnywhere • • • • SAConnection SACommand SADataReader SADataAdapter More integration with Visual Studio .NET • Server Explorer integration ADO.NET 2.0 178 Server Explorer Integration Demo 179 ADO.NET 2.0 Released with Visual Studio 2005 in November New features • • • • • • Provider factories Data source enumeration Connection string builder Metadata schemas Asynchronous commands Snapshot isolation level 180 SQL Anywhere 10 Data Management and Query Processing Glenn Paulley Senior Manager - Engineering, Sybase iAnywhere Glenn.Paulley@ianywhere.com Tuesday, August 8, 2006 8:00 am – 12:00 pm Performance and Application Profiling in SQL Anywhere 10 Dan Farrar Sr. Engineer, Sybase iAnywhere Dan.Farrar@ianywhere.com Tuesday August 8, 2006 1:00 pm – 2:30 pm Plan of attack Overview Demonstration of automatic application profiling Details about application profiling • Architecture • User interface Demonstration of manual application profiling • How to set it up • What to look for Other methods of troubleshooting performance Questions? 185 Our problem Users are complaining about slowness on our application – what should we do? • We will use a “sabotaged” version of SalesSim • Simulates the sales, shipping, and finance departments of a company • How do we use the new profiling features of SQL Anywhere 10 to find the boat anchors and restore/improve performance? 186 Application profiling Combines in one tool most of the functionality provided by: • • • • • Request logging Procedure profiling Graphical plan capturing Index consultant Statistics monitoring Many usage scenarios: • Debugging application logic • Troubleshooting specific performance problem • Leave running in background permanently 187 Application profiling wizard SA Plugin for Sybase Central includes the Application Profiling Wizard • Handle all details of setting up a profile and analyzing it • Detect common problems automatically – – – – Schema Indexes Server and connection options Application structure • Make suggestions for improving your application • Simplest way to use application profiling capabilities 188 Manual application profiling Using the application profiling tool manually allows for more flexibility in controlling what data is analyzed High level steps: • • • • • Create and start a tracing database Configure a tracing session Run your application Close (“detach”) the tracing session and save the trace data Analyze the tracing session using the application profiling mode in the SQL Anywhere plugin 189 Diagnostic tracing The Jasper engine includes new functionality to record many types of database events: • • • • • • Connections SQL statements Query execution plans Blocked connections Deadlocks Performance counters All types of data can be traced from sources both internal and external to the server 190 Diagnostic architecture Traced data can go to any database • To local database for ease of use • To a non-local database for performance and to avoid bloat • For best results, use a dedicated database Traced data stored in temporary tables • New feature in Jasper: shared temporary tables • No I/O overhead • At end of logging session, data automatically saved to permanent storage (base tables) 191 Diagnostic architecture 192 Specifying what to trace Trace only for a specified list of objects: • Users • Connections • Procedures, triggers, functions, events Trace only under certain circumstances • When a statement is “expensive” • When a query differs from its estimated cost • Every n milliseconds Limit volume of trace that is stored • By disk space • By length of time 193 Specifying what to trace You can mix and match these configurations and change them on the fly For example: • Trace all plans used by user ‘ALICE’ • Trace all statements used by procedures ‘PR1’ and ‘PR2’ • Trace all query plans in the database for queries that take more than 20 seconds You can use the default tracing levels (low, medium, high) as a template • The tracing wizard in the SA Plugin will give you this choice • Manually, using the sa_set_tracing_level() procedure 194 Controlling tracing manually sa_set_tracing_level() ATTACH TRACING TO ‘connstr’ [LIMIT {HISTORY nnn{MINUTES|HOURS|DAYS}} | {SIZE nnn{MB|GB}}] DETACH TRACING {WITH|WITHOUT} SAVE REFRESH TRACING LEVELS 195 The sa_diagnostic_tracing_levels table Scope – what objects are we interested in? • The whole database? • A specific procedure, user, connection, or table? Type – what type of data are we interested in? • SQL statements? • Query plans? • Information about blocks, deadlocks, or statistics Condition – under what conditions should we capture this data? • Only for expensive or misestimated queries? 196 Specifying what to trace 197 Controlling tracing with the SA Plugin The Tracing wizard is accessible by right-clicking on the database object • First, choose basic tracing level – it acts as a template • Then, add or remove specific tracing entries • Next, if you need to create a tracing database, create it and start it on a database server • Finally, specify where the trace is to be sent, and how much data to store 198 Tracing databases 199 Saving a tracing session When finished tracing, the tracing session can be stopped (detached): • In the SA plugin, right-click the database object • Manually, use the DETACH TRACING statement Detaching without saving will leave the data in the temporary tables in the tracing database • It can later be saved using the sa_save_trace_data() procedure Detaching with save will permanently store the data 200 Analysis of traced data Can be viewed / queried in real time during trace • Using DBISQL or custom scripts, issue queries against the sa_tmp_diagnostic_* tables Once saved, a tracing session is analyzed using Application Profiling mode in SA Plugin • Provides multiple views of traced data – Allows “drill-down” to see more detail about a specific entry • Graphical correlation of performance statistics with statements that were active at the time • Automatic detection of common performance problems 201 Replay of server state Tracing captures optimizer state as queries are executed • Captures cache contents, table sizes, option settings, etc. • Allows server to recreate the optimizer state for queries in the trace – Not foolproof (because of changing statistics) • Can be used to see the graphical plan used by the server when only SQL text was traced • Lets Index Consultant make higher-quality recommendations • Works even if tracing sent to another database – Allows Index Consultant to run offline on another server 202 Status panel If the trace was created as part of the Application Profiling Wizard: • Shows a summary of what was captured • Performance recommendations are automatically generated and available on the Recommendations panel If you created a tracing session manually: • Shows all tracing sessions stored in a database • Allows you to generate recommendations 203 Summary panel Gives a high-level view of SQL statements captured by the tracing session “Similar” statements are grouped together • For each statement a signature is computed • For queries, insert, update, and delete statements, statements are similar when they involve the same tables and columns • Other statements are grouped by type (for example, all CREATE TABLE statements are similar) From this view, you can determine which statements are most expensive, either because: • They are expensive individually, or • They are cheap individually but executed many times 204 Details panel Shows low-level details about all SQL statements captured in the trace • Start time is the time the statement began execution • Duration is the amount of time spent by the server processing the request – all statements have a minimum reported duration of 1ms • For cursors, time the cursor was closed • For compound statements, shows line number and procedure name (if available) • Text plan is always captured at optimization time 205 Statement details Right click on a statement to obtain more details about it • User that executed it • SQL error code, if any • SQL text – If the statement was captured as it was executed, the text will be the original text – If the statement was captured later (because it met some condition), it will be reconstructed from the parse tree – Reconstructed statements may not be identical to the original statements 206 Query details Right clicking on a query from the Details view will show both statement and query details Query details include • • • • Numbers of each type of fetch (forward, reverse, absolute) Time to fetch first row Text plan captured at execution time Graphical plan representation – May be the graphical plan at execution time – May be a best guess at the execution plan, based on the conditions in the server – compare a guessed graphical plan to the text plan before relying on it 207 Blocking panel Shows connections that were blocked • What statement was the connection executing when it was blocked • What connection blocked it • How long did the block last • Right click to see more details about either connection involved in a block 208 Deadlock panel Shows deadlock events that were traced • Displays a graphical representation of which connections waited on each other • Shows which connection was rolled back • If available (that is, if tracing was attached to the local database), shows the primary key of each row that was blocked on 209 Statistics panel Shows a graphical representation of performance counters captured • Multiple statistics can be viewed, but only for one connection at a time • You are often interested in changes in a statistic (a “knee” in a graph) – “Show Statements” button will filter the list of statements in the Details panel to just those that fit on the visible portion of the graph 210 Index consultant Index consultant can be invoked • on the entire database • on individual queries from the Details panel It is run automatically when application recommendations are generated • But it generates more details when run manually 211 Other tools for troubleshooting performance New properties for performance monitoring Almost all of the old methods of troubleshooting performance are available in SQL Anywhere 10 • There are specific circumstances in which the legacy methods may be the best approach 212 ApproximateCPUTime Connection-level property – CPU time accumulated by this connection Reasonably accurate most of the time – but still an approximation Each CPU contributes to the counter – thus if two connections are maxing out two CPUs for one second, each will have an ApproximateCPUTime value of 1.0 Use to determine what connection may need to be dropped if the server is dragging (but be careful!) Best viewed from DBConsole 213 Request logging Stores SQL text of all requests Enable in two ways: • -zr command line switch (with -zo to redirect output to a file) • sa_server_option( ‘RequestLogging’, ‘all’ ) Additional switches let you store data in a cyclical series of files to limit the maximum captured data Probably deprecated in future releases 214 Procedure profiling View the times and execution counts of stored procedures This feature is now part of application profiling mode in the SA Plugin Can be used manually from DBISQL • sa_server_option(‘ProcedureProfiling’,‘on’) • Analyse with sa_procedure_profile_summary() and sa_procedure_profile() procedures Useful for rapid tuning of procedures – it is easy to change the procedure definitions on the fly 215 Improving Performance with SQL Anywhere 10 Materialized Views Anil Goel Sr. Engineer, Sybase iAnywhere Anil.Goel@ianywhere.com Tuesday, August 8, 2006 3:00 pm – 4:30 pm
© Copyright 2024