Hi all, considering upgrading to SQL Anywhere 16 for our embedded application, and particularly interested in performance improvements. I just have a few questions around database file format.
So it appears as though it is possible to connect to and read a database file created in SQL Anywhere 12 with SQL Anywhere 16. Is it possible to do the opposite? I would guess not. Also are there any implications (particularly from a performance perspective) of keeping data files in Sql Anywhere 12 format but accessing them from SQL Anywhere 16?
Is there an accepted upgrade process for database files to migrate them from 12 to 16?
Just to answer your question partially:
The v16 docs give some hints on reasons to do a rebuild or an upgrade here. As to performance implications, I guess that will result in the usually "It depends" response...
> Is there an accepted upgrade process for database files to migrate them from 12 to 16?
First, read about the behavior changes and make the necessary changes to your application.
What's new in version 12.0.1 » SQL Anywhere behavior changes if you are using 12.0.0.
Make sure you apply EBF 1915 because anything earlier is affected by the Heartbleed bug, then read the section "16.0.0 Behavior Changes and Critical Bug Fixes" in the read-me file that comes with EBF 1915...
SQL Anywhere Bug Fix Readme for Version 16.0.0, build 1915.htm
Second, consider doing an "in-place" upgrade via dbunload. Here is a sample batch file...
REM If you're a command-line kinda guy, here is my template Windows REM batch file run_dbunload_upgrade_v12_to_v16.bat. It does the REM unload-reload-all-in-one-dbunload-step, then starts dbsrv16 REM and dbisql so you can make sure the new database is up and running. REM Be sure to stop *all* database engines on the computer you're using, REM before starting the upgrade. REM dbunload... REM -an ... where to put new database REM -ap ... new database page size REM -c ... old database startup connection string REM -o ... where to put unload console display text file REM -v verbose mode for console display PAUSE MAKE SURE YOU DO NOT HAVE ANY ENGINES RUNNING. "%SQLANY16%\bin64\dbunload.exe"^ -an "C:\$ blogs and websites\blog SQLAnywhere\20130691 PENDING Building a Link Checker Inside SQL Anywhere\testing\catalog.db"^ -ap 4096^ -c "DBF=C:\$ blogs and websites\blog SQLAnywhere\20120319 Tales From The Doc Face\catalog.db;UID=dba;PWD=sql"^ -o "C:\$ blogs and websites\blog SQLAnywhere\20130691 PENDING Building a Link Checker Inside SQL Anywhere\testing\dbunload_log_demo.txt"^ -v PAUSE dbunload/reload done... REM dbsrv16... REM -c ... initial RAM cache size REM -o ... where to put server console display text file REM -os ... when to rename and restart server console display text file REM demo16.db new database to start "%SQLANY16%\bin64\dbspawn.exe"^ -f "%SQLANY16%\bin64\dbsrv16.exe"^ -o "C:\$ blogs and websites\blog SQLAnywhere\20130691 PENDING Building a Link Checker Inside SQL Anywhere\testing\dbsrv16_log_demo16.txt"^ "C:\$ blogs and websites\blog SQLAnywhere\20130691 PENDING Building a Link Checker Inside SQL Anywhere\testing\catalog.db" PAUSE dbsrv16 started... REM dbisql... REM -c ... new database connection string "%SQLANY16%\bin64\dbisql.com"^ -c "ENG=catalog;DBN=catalog;UID=dba;PWD=sql" PAUSE All done...