<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-497787815177352569</id><updated>2009-11-27T09:58:00.771-05:00</updated><title type='text'>SQL Anywhere</title><subtitle type='html'>Breck Carter's blog about SQL Anywhere... yes, "SQL Anywhere" is an actual product, like MySQL, Oracle, SQL Server, ASE, only LOTS BETTER :)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default?start-index=26&amp;max-results=25'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>225</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-5904497777466404386</id><published>2009-11-22T08:06:00.000-05:00</published><updated>2009-11-22T08:09:18.227-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLA'/><title type='text'>SQLA, Two Weeks Later</title><content type='html'>&lt;p&gt;It has been two weeks since the &lt;a href="http://sqla.stackexchange.com/" target="_blank"&gt;SQL Anywhere Question and Answer website SQLA&lt;/a&gt; was &lt;a href="http://sqlanywhere.blogspot.com/2009/11/sqlastackexchangecom.html" target="_blank"&gt;announced here&lt;/a&gt;, and it's been one week since &lt;a href="http://sqlanywhere.blogspot.com/2009/11/sqla-one-week-later.html" target="_blank"&gt;the first status report&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Another slow(er) week&lt;/h3&gt;&lt;br /&gt;The total number of questions rose from 25 to 44. That's less than double, indicating that posting activity was slower in the second week. Also, a significant number of questions were of the administrative variety, so nobody better get excited about SQLA being crushed by its own success or anything like that.&lt;br /&gt;&lt;br /&gt;Not yet, anyway.&lt;br /&gt;&lt;br /&gt;The number of users rose from 29 to 35... nope, not exciting yet.&lt;br /&gt;&lt;br /&gt;But they are &lt;b&gt;good&lt;/b&gt; users, and they've been asking some &lt;b&gt;great&lt;/b&gt; questions, more on that later.&lt;br /&gt;&lt;br /&gt;Here are the StatCounter numbers for the nine full days since the hidden JavaScript thingie was plopped onto the "Sidebar Low" area (which sits at the bottom-right of some - not all - of the SQLA page displays):  &lt;br /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_H2KjtJnsvcU/SwkiYBhDGII/AAAAAAAAA6U/ReofCSftRek/s1600/StatCounter_for_SQLA_13_to_21_Nov_2009.jpg" width="629" height="306" title="StatCounter for SQLA 13 to 21 Nov 2009"&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Top Four Questions&lt;/h3&gt;&lt;br /&gt;Here are the top four new questions from SQLA's second week of operation:&lt;blockquote&gt;&lt;a href="http://sqla.stackexchange.com/questions/93/troubleshooting-high-temporary-file-usage" target="_blank"&gt;Troubleshooting High Temporary File Usage&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/75/how-does-sql-anywhere-pass-parameters" target="_blank"&gt;How does SQL Anywhere pass parameters?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/77/product-suggestion-please-implement-record-variable-type" target="_blank"&gt;Product Suggestion: Please implement record variable type&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/92/whats-the-size-of-your-biggest-database" target="_blank"&gt;What’s the size of your biggest database?&lt;/a&gt;&lt;/blockquote&gt;Here's the top five from the first week:&lt;blockquote&gt;&lt;a href="http://sqla.stackexchange.com/questions/40/why-should-i-use-sql-anywhere-for-my-next-project" target="_blank"&gt;Why should I use SQL Anywhere for my next project?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/54/is-there-already-an-ianywhere-position-on-this-new-website" target="_blank"&gt;Is there already an iAnywhere position on this new website?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/51/does-parameter-passing-degrade-stored-procedure-performance" target="_blank"&gt;Does parameter passing degrade stored procedure performance?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/6/what-is-the-best-refresh-strategy-for-materialized-views" target="_blank"&gt;What is the best refresh strategy for materialized views?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/12/what-is-the-best-way-to-simulate-oracle-autonomous-transactions-in-sql-anywhere" target="_blank"&gt;What is the best way to simulate Oracle Autonomous Transactions in SQL Anywhere?&lt;/a&gt;&lt;/blockquote&gt;Is it just me, or are some of the questions and answers starting to look more like magazine articles or blog posts than tech support cases?&lt;br /&gt;&lt;br /&gt;There's room for both, methinks. There's room for pretty much &lt;b&gt;anything&lt;/b&gt; that's relevant.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Development is proceeding. Honestly. Trust me.&lt;/h3&gt;&lt;br /&gt;The FAQ still hasn't been updated. Instead, a &lt;a href="http://sqla.stackexchange.com/questions/tagged/faq" target="_blank"&gt;bunch of questions tagged "faq"&lt;/a&gt; have been posted, 14 at last count. So it's not like there's &lt;b&gt;no&lt;/b&gt; work being done, just not any &lt;b&gt;hard&lt;/b&gt; work :)&lt;br /&gt;&lt;br /&gt;Here are a few of the more significant ones:&lt;blockquote&gt;&lt;a href="http://sqla.stackexchange.com/questions/125/poll-is-it-ok-for-vendors-to-post-questions" target="_blank"&gt;Poll: Is it OK for vendors to post questions?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/109/what-is-the-backup-and-recovery-strategy-for-sqla" target="_blank"&gt;What is the backup and recovery strategy for SQLA?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/97/exhortation-do-not-mark-anything-community-wiki" target="_blank"&gt;Exhortation: Do not mark anything “community wiki”&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;It's hard being a tag&lt;/h3&gt;&lt;br /&gt;Tag population control is in effect at SQLA. &lt;br /&gt;&lt;br /&gt;SQLA has its own Search facility, plus there's always Google, so there doesn't seem to be much point in defining a bazillion different tags for the purpose of improving search. Plus, it's really hard work (ask anyone who's had to create a book index), and very few people do a good job (ask me about the mediocre job I did on my book).  &lt;br /&gt;&lt;br /&gt;So, when a tag gets used more than once, it's &lt;a href="http://sqla.stackexchange.com/tags" target="_blank"&gt;going to get looked at&lt;/a&gt; to see if it should be renamed, eliminated, merged with another tag, etcetera, all with the goal of using tags to classify or categorize the question.&lt;br /&gt;&lt;br /&gt;Users are completely free to define new tags, five per question if they want (the software-imposed limit). It's only when a tag gets used on more than one question is it going to be a candidate for euthanasia, er, revision.&lt;br /&gt;&lt;br /&gt;BTW, there is a new "SQLA" tag (category, label, whatever) on &lt;b&gt;this&lt;/b&gt; blog so you can see &lt;a href="http://sqlanywhere.blogspot.com/search/label/SQLA" target="_blank"&gt;all the posts about SQLA at once&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Training begins for the backup administrator&lt;/h3&gt;&lt;br /&gt;A volunteer for the post of backup SQLA administrator has been accepted, and training begins on Tuesday. Then, while the primary administrator lies face-up by the pool, the backup administrator will be responsible for keeping SQLA free from evil-doers. &lt;br /&gt;&lt;br /&gt;For that role the backup administrator &lt;b&gt;will&lt;/b&gt; be wearing a supersuit, with cape.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The SQLA Lottery&lt;/h3&gt;&lt;br /&gt;The pirate chief, er, primary administrator has started giving out random bounties of 100 reputation points, for no particular reason other than &lt;a href="http://sqla.stackexchange.com/questions/97/exhortation-do-not-mark-anything-community-wiki" target="_blank"&gt;it's important for people to have points&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Three such bounties have already been handed out (which accounts for the fact the administrator is &lt;a href="http://sqla.stackexchange.com/users" target="_blank"&gt;no longer first place in the points&lt;/a&gt;) and &lt;a href="http://sqla.stackexchange.com/questions?sort=featured" target="_blank"&gt;two bounties remain available&lt;/a&gt;... essentially for the asking.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;One prediction, one boast&lt;/h3&gt;&lt;br /&gt;SQLA activity will not increase significantly any time soon, and might even decrease:&lt;ul&gt;&lt;li&gt;It's all in beta, the software and the site, and some people don't do beta.&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;We're in one of those &lt;b&gt;no-real-work-gets-done-for-weeks-on-end&lt;/b&gt; periods, this one tagged "Thanksgiving-Christmas-New-Years".&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;SQLA has not been officially announced; i.e., nobody's promoted it on the NNTP forums.&lt;/li&gt;&lt;/ul&gt;But... SQLA will eventually be recognized as perfectly suited to the task, of that there is no doubt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-5904497777466404386?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/5904497777466404386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sqla-two-weeks-later.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/5904497777466404386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/5904497777466404386'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sqla-two-weeks-later.html' title='SQLA, Two Weeks Later'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_H2KjtJnsvcU/SwkiYBhDGII/AAAAAAAAA6U/ReofCSftRek/s72-c/StatCounter_for_SQLA_13_to_21_Nov_2009.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-1565810325380289158</id><published>2009-11-21T02:27:00.001-05:00</published><updated>2009-11-21T02:27:32.146-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>Cloud Computing with SQL Anywhere</title><content type='html'>&lt;p&gt;Apparently I don't check my email very carefully because I missed the original announcement &lt;a href="http://marketing.ianywhere.com/forms/sqlanywherecloudmultitenantwebcast" target="_blank"&gt;of this webcast&lt;/a&gt;:&lt;blockquote&gt;&lt;a href="http://marketing.ianywhere.com/forms/sqlanywherecloudmultitenantwebcast" target="_blank"&gt;&lt;img src="http://1.bp.blogspot.com/_H2KjtJnsvcU/SweUCpShyYI/AAAAAAAAA6M/2X9PhnXn_I0/s1600/Cloud+Computing+with+SQL+Anywhere.jpg" width="600" height="125" title="Cloud Computing with SQL Anywhere"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cloud and Multi-Tenant Architectures with SQL Anywhere Webcast&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SQL Anywhere supports a variety of capabilities that ease the shift from an on-premise database server to a hosted server environment.  This session will examine different architectural approaches for designing and developing multi-tenant applications to be hosted in a SQL Anywhere Server.  Additionally, several operational considerations for hosted SQL Anywhere environments will be discussed.&lt;br /&gt;&lt;br /&gt;Presenter: Chris Kleisath, Sr. Director of Engineering&lt;br /&gt;&lt;br /&gt;Date: Tuesday, November 24, 2009&lt;br /&gt;Time: 7am PST / 10am EST / 3pm GMT / 4pm CET &lt;br /&gt;or: 11am PST / 2pm EST / 7pm GMT / 8pm CET&lt;/blockquote&gt;Yes, that's this Tuesday coming up. &lt;a href="http://marketing.ianywhere.com/forms/sqlanywherecloudmultitenantwebcast" target="_blank"&gt;Click here to register.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you can't attend, you can probably get &lt;b&gt;most&lt;/b&gt; of the material from the five-part series starting here: &lt;a href="http://iablog.sybase.com/kleisath/index.php/2009/09/multi-tenant-database-architecture-%E2%80%93-part-1/" target="_blank"&gt;Multi-Tenant Database Architecture – Part 1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;But...&lt;/b&gt; there's always a "but"... if you &lt;b&gt;can&lt;/b&gt; watch the webcast you &lt;b&gt;should&lt;/b&gt; watch the webcast because Chris is always entertaining when he speaks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-1565810325380289158?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/1565810325380289158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/cloud-computing-with-sql-anywhere.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/1565810325380289158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/1565810325380289158'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/cloud-computing-with-sql-anywhere.html' title='Cloud Computing with SQL Anywhere'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_H2KjtJnsvcU/SweUCpShyYI/AAAAAAAAA6M/2X9PhnXn_I0/s72-c/Cloud+Computing+with+SQL+Anywhere.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-7735086152150899763</id><published>2009-11-20T05:58:00.002-05:00</published><updated>2009-11-22T03:50:12.524-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLA'/><title type='text'>What is the backup and recovery strategy for SQLA?</title><content type='html'>&lt;p&gt;Nobody wants another &lt;a href="http://sqlanywhere.blogspot.com/2009/02/web-20-meets-database-101.html" target="_blank"&gt;Magnolia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's the current situation: The &lt;a href="http://sqla.stackexchange.com" target="_blank"&gt;SQLA question &amp; answer site for SQL Anywhere&lt;/a&gt; runs on StackExchange software and is hosted by Fog Creek. According to an email from Joel Spolsky: "It is actually the same as Fog Creek hosting (it’s on the same infrastructure as what is &lt;a href="http://www.fogcreek.com/Kiln/learnmore.html?section=FogCreekHosting" target="_blank"&gt;described in that article&lt;/a&gt;)."&lt;br /&gt;&lt;br /&gt;That takes care of part of SQLA's backup and recovery strategy: We trust Fog Creek, they operate on a far higher plane than Magnolia ever did.&lt;blockquote&gt;&lt;i&gt;(Magnolia was named after the Greek god of cluelessness, and it has now been re-launched as "&lt;a href="http://gnolia.com/" target="_blank"&gt;Gnolia&lt;/a&gt;" which is Latin for "missed business opportunity".)&lt;/i&gt;&lt;/blockquote&gt;The second part of SQLA's strategy is the "verify" part of "trust but verify". It is expected that before the StackExchange service goes live (it is in Beta now, just like SQLA is), the "Download Your StackExchange Database" site management option will be implemented.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_H2KjtJnsvcU/SwZ0LuN0nvI/AAAAAAAAA6E/6N3yHw2kYc4/s1600/Download+Your+StackExchange+Database.jpg" width="356" height="384" title="Download Your StackExchange Database"&gt;&lt;br /&gt;&lt;br /&gt;Having said all that, there are gaps, like "Will it be possible to upload the StackExchange data we downloaded?"&lt;br /&gt;&lt;br /&gt;And, "How would we migrate to a different hosting service?"&lt;br /&gt;&lt;br /&gt;Don't know, do care (very much), too early to know the answers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-7735086152150899763?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/7735086152150899763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/what-is-backup-and-recovery-strategy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7735086152150899763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7735086152150899763'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/what-is-backup-and-recovery-strategy.html' title='What is the backup and recovery strategy for SQLA?'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_H2KjtJnsvcU/SwZ0LuN0nvI/AAAAAAAAA6E/6N3yHw2kYc4/s72-c/Download+Your+StackExchange+Database.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-7571308370487389637</id><published>2009-11-18T03:43:00.001-05:00</published><updated>2009-11-18T03:43:47.754-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>Come to Candia!</title><content type='html'>&lt;p&gt;Here's an email I got Monday from the International Sybase User Group. &lt;br /&gt;&lt;br /&gt;I am sure everyone from the USA is welcome, not just folks from the nothern part. &lt;br /&gt;&lt;br /&gt;Caution: Candia can be cold in December so bring a sweater!&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;hr&gt;&lt;br /&gt;Dear Sybase Enthusiast,&lt;br /&gt;&lt;br /&gt;Please join us on December 1st and 2nd, 2009 for the ISUG Canadian Technical Summit to be held in the Candian Capital - Ottawa!&lt;br /&gt;&lt;br /&gt;For the first time, Ottawa will be hosting a two day event drawing together many Sybase professionals and 3rd party vendors from Canada and the nothern USA.  This event will have two streams - Data Management and Development. You will be able to register for either one or better yet, make sure that you bring a colleague with you so that you can cover both agendas. There is even a planned "cocktail reception" on the Tuesday night (Dec 1st). &lt;br /&gt;&lt;br /&gt;The event will cover subject areas such as: SMS messaging from PB 12.NET, Taking your PowerBuilder applications to the Web; Data Warehousing, Replication, Sybase and SAS, Data Modeling, Database Monitoring and Performance, ASE and PB tools, Product Futures, Mobility, etc just to highlight some key areas. &lt;br /&gt;&lt;br /&gt;On the Development side we will see evangelist John Strano showing us the latest PB 12.NET from engineering, best practices and another training session. For Data Management we will have key Sybase personnel addressing key product futures, Mobility and presentations on comparing various Data Modeling approaches. You will have access to key Sybase technical staff from Canada and the USA to ask questions about Sybase products, interact with users utilizing the same technologies and gain key information into 2010 based products and features. &lt;br /&gt;&lt;br /&gt;For more information and to see a complete list of topics covered, please see our registration page.  You'll notice that to register you must be a member of the International Sybase User Group (ISUG).  You can become a member directly at http://www.isug.com/na/SelectOptions.html or by joining the Ottawa Sybase User Group (OSUG) at http://www.isug.com/na/OSUG.html.  All members of OSUG are automatically members of ISUG as well!  You can register with a free Associate Member account, but we encourage you to become a full Regular Member if you can.&lt;br /&gt;&lt;br /&gt;For questions about and support for this event, you can contact ISUG's North American Regional User Group Director and OSUG President, Chris Pollach (chris@isug.com).  Chris will be happy to answer any questions you may have and assist you with registering if necessary.&lt;br /&gt;&lt;br /&gt;We look forward to seeing you in December!&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;The ISUG Events Team&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-7571308370487389637?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/7571308370487389637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/come-to-candia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7571308370487389637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7571308370487389637'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/come-to-candia.html' title='Come to Candia!'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-3370801140038944342</id><published>2009-11-15T13:14:00.001-05:00</published><updated>2009-11-22T03:51:22.296-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLA'/><title type='text'>SQLA, One Week Later</title><content type='html'>&lt;p&gt;As of 7:20 AM EST, Sunday November 8 2009, the &lt;a href="http://sqla.stackexchange.com/" target="_blank"&gt;SQLA question and answer website&lt;/a&gt; was up and running and &lt;a href="http://sqlanywhere.blogspot.com/2009/11/sqlastackexchangecom.html" target="_blank"&gt;announced&lt;/a&gt;, making today the one week anniversary.&lt;br /&gt;&lt;br /&gt;For you history buffs, work on SQLA began around 1 or 2 AM on November 8... seriously, six hours from project inception to live beta, it's that easy to set up a &lt;a href="http://www.stackexchange.com/" target="_blank"&gt;StackExchange&lt;/a&gt; site. Before 1 AM it was a just a to-do: "try out StackExchange beta". &lt;br /&gt;&lt;br /&gt;In fact, the site was created from scratch twice, once using the wrong site name (gotta respect &lt;a href="http://www.sybase.com/files/Legal_Docs/Sybase-Trademark-Listing-081009.pdf" target="_blank"&gt;those trademarks&lt;/a&gt;!)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Here are the usage numbers&lt;/h3&gt; &lt;br /&gt;According to the SQLA software itself, there are now&lt;ul&gt;&lt;li&gt;29 registered users,&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;25 questions,&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;46 answers and&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;42 comments, and there have been &lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;850 views.&lt;/li&gt;&lt;/ul&gt;According to &lt;a href="http://www.statcounter.com/" target="_blank"&gt;StatCounter&lt;/a&gt;, for the one full weekday that it was told to accumulate SQLA statistics (Friday), there were:&lt;ul&gt;&lt;li&gt;532 page views,&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;83 unique visitors and&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;40 returning visitors.&lt;/li&gt;&lt;/ul&gt;Considering that there has been no mention of SQLA on any of the NNTP forums yet, I think the numbers are... low? high? just right?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Top Five Questions&lt;/h3&gt;&lt;br /&gt;Chosen subjectively by a panel of judge, based on content and activity:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/40/why-should-i-use-sql-anywhere-for-my-next-project" target="_blank"&gt;Why should I use SQL Anywhere for my next project?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/54/is-there-already-an-ianywhere-position-on-this-new-website" target="_blank"&gt;Is there already an iAnywhere position on this new website?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/51/does-parameter-passing-degrade-stored-procedure-performance" target="_blank"&gt;Does parameter passing degrade stored procedure performance?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/6/what-is-the-best-refresh-strategy-for-materialized-views" target="_blank"&gt;What is the best refresh strategy for materialized views?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqla.stackexchange.com/questions/12/what-is-the-best-way-to-simulate-oracle-autonomous-transactions-in-sql-anywhere" target="_blank"&gt;What is the best way to simulate Oracle Autonomous Transactions in SQL Anywhere?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Comments are being used as a substitute for threaded discussions&lt;/h3&gt;&lt;br /&gt;For many years I have clung to the idea that threaded discussions are absolutely necessary for having, well, discussions. One hundred percent of the HTTP-based implementations of threaded discussions suck, when compared with NNTP (newsgroups). That includes purely-web-based discussion sites, all the web interfaces to newsgroup servers, even the re-incarnation of Google Groups. They are either slow, or unusable, or both. &lt;br /&gt;&lt;br /&gt;Only classic port 119 (NNTP) clients like Forte Agent work well for threaded discussions.&lt;br /&gt;&lt;br /&gt;Or so I believe(d).&lt;blockquote&gt;(If there was &lt;a href="http://en.wikipedia.org/wiki/Late_Adopter" target="_blank"&gt;a page for "Late Adopter" in Wikipedia&lt;/a&gt;, it would have my picture.)&lt;/blockquote&gt;The trouble is, all the world's firewalls are closing down port 119. And new features are coming to the web, not newsgroups. &lt;br /&gt;&lt;br /&gt;So, now we have SQLA. Wonderful interface, fast enough, but... no threaded discussions.&lt;br /&gt;&lt;br /&gt;Or are there? It is starting to look like being able to &lt;ul&gt;&lt;li&gt;post multiple answers, &lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;and post multiple (albeit short) comments on each answer, &lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;AND post comments on the question itself,&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;as well as editing the answers and even the question, &lt;/li&gt;&lt;/ul&gt;is a pretty [expletive deleted] good alternative to threaded discussions.&lt;br /&gt;&lt;br /&gt;Well, I'm not sure about the "editing the answers and even the question" part, that's not really happening yet and I'm not sure it should (see later point "Shy people are still shy").&lt;br /&gt;&lt;br /&gt;Out there in the blogosphere people are having endless discussions using comments, with and without cheesy "nesting" as a substitute for threading, and the overwhelming volume of traffic says it's working. Here at SQLA, the multiple-answers-multiple-comments features should be much better/easier than that.&lt;br /&gt;&lt;br /&gt;Plus, it's easy to type a twitter-style "@username:" prefix on your comment, the cyberspace equivalent of the meatspace shout "Hey, Joe, I think we might have a solution for you, come on over, let's talk!" &lt;br /&gt;&lt;br /&gt;Maybe it will work, maybe it won't. I think it will. I think it will work very well for "How do I..." questions, and even better for discussions about future product features... possibly even better at that than the NNTP forum. &lt;br /&gt;&lt;br /&gt;We'll see.&lt;br /&gt;&lt;br /&gt;Will SQLA replace the NNTP forums? Don't know, don't care. It's like cellular, some people still use &lt;a href="http://en.wikipedia.org/wiki/Mobile_radio_telephone" target="_blank"&gt;radio telephones&lt;/a&gt; ... honestly, I didn't know that either, but it's true, and they have reasons (like, "it's the law", stuff like that).&lt;br /&gt;&lt;br /&gt;Will Breck still answer questions on the NNTP forums? Sure will! That's the point, answering the questions... not having a protocol war, but helping people.&lt;br /&gt;&lt;br /&gt;What will happen when Sybase/iAnywhere implements a modern web-based community site? That's a good question ... [struggle] [microphone drops] ... We have no comment on that at this time.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Voter turnout is low&lt;/h3&gt;&lt;br /&gt;A total of 30 up-or-down votes have been cast. That represents a voter turnout of 1.5% according to the following absurd formula:&lt;ul&gt;&lt;li&gt;each user can vote each question up or down, except their own&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;each user can vote each answer up or down, except their own&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;there are 29 users, 25 questions and 46 answers&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;which comes out to an theoretical maximum of 29*25 - 1*25 + 29*46 - 1*46 = ...&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;wait for it...&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;1988 possible votes &lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;or 30/1988 = ...&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;1.5% voter turnout&lt;/li&gt;&lt;/ul&gt;That formula is absurd because it doesn't account for&lt;ul&gt;&lt;li&gt;the fact that not every user looks at every question and answer&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;the fact that users don't necessarily form an opinion about every thing they read&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;and the fact that down-votes should probably be rare, perhaps almost non-existent.&lt;/li&gt;&lt;/ul&gt;Still, 1.5% feels low. Voting is a powerful feature for making SQLA better. &lt;br /&gt;&lt;br /&gt;Maybe 3% turnout is a goal worth seeking. Plus, getting more folks who ask questions to check the answer they like the best. And getting folks to click the "Favorite" star.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Early adopters are behaving well&lt;/h3&gt;&lt;br /&gt;Nobody has voted anything down into negative-points territory, or at least nothing's been voted down past zero points. That's OK with me. &lt;br /&gt;&lt;br /&gt;Nobody has edited anything except their own stuff, at least as far as I can tell. &lt;br /&gt;&lt;br /&gt;In fact, nothing bad is happening at all. That is *not* a surprise. &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Shy people are still shy&lt;/h3&gt;&lt;br /&gt;I don't know of any way to *guarantee* people will become less-shy about asking questions, but there are an infinity of ways to guarantee people will *not* participate. You can see some of those morale-destroying techniques in action over at &lt;a href="http://stackoverflow.com/" target="_blank"&gt;StackOverflow&lt;/a&gt;. The software is wonderful but a significant minority of the active StackOverflow participants are arrogant [expletive deleted]s ... my [insincerity alert] apologies in advance, but there's no other way to put it. &lt;br /&gt;&lt;br /&gt;That won't happen at SQLA, it's moderated. &lt;br /&gt;&lt;br /&gt;But the real reason it won't happen is this: The SQL Anywhere user community consists of folks who are treat each other with respect. &lt;br /&gt;&lt;br /&gt;So far, "SQLA Moderator" has been the easiest job in the world. It's probably illegal to have this much fun.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;And finally...&lt;/h3&gt;&lt;br /&gt;Here is &lt;a href="http://www.statcounter.com/" target="_blank"&gt;StatCounter&lt;/a&gt;'s view of where SQLA page views came from for the last couple of days.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_H2KjtJnsvcU/SwA7TxVM5iI/AAAAAAAAA5s/lwL1bDRcQ6k/s1600-h/And+finally.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 218px;" src="http://2.bp.blogspot.com/_H2KjtJnsvcU/SwA7TxVM5iI/AAAAAAAAA5s/lwL1bDRcQ6k/s400/And+finally.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5404384763690411554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Question: Did the user on the shores of Hudson Bay at the southern border of Nunavut answer a question asked by the user at the end of PA279 near the Xingu river and São Félix do Xingu in Pará, or was it the other way around, or neither case?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_H2KjtJnsvcU/SwA7lKx9JyI/AAAAAAAAA50/FvrLlMVH7zk/s1600-h/Sao+Felix+do+Xingu.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://4.bp.blogspot.com/_H2KjtJnsvcU/SwA7lKx9JyI/AAAAAAAAA50/FvrLlMVH7zk/s400/Sao+Felix+do+Xingu.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5404385062579676962" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-3370801140038944342?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/3370801140038944342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sqla-one-week-later.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/3370801140038944342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/3370801140038944342'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sqla-one-week-later.html' title='SQLA, One Week Later'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_H2KjtJnsvcU/SwA7TxVM5iI/AAAAAAAAA5s/lwL1bDRcQ6k/s72-c/And+finally.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-2251963070162490890</id><published>2009-11-11T07:19:00.004-05:00</published><updated>2009-11-22T03:52:39.929-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLA'/><title type='text'>Tell your friends about SQLA</title><content type='html'>&lt;p&gt;If y'all want &lt;a href="http://sqla.stackexchange.com/" target="_blank"&gt;SQLA&lt;/a&gt; to succeed, more participation is the answer. The Beta is open for everyone, and it's up to &lt;b&gt;you&lt;/b&gt; to tell other people.&lt;br /&gt;&lt;br /&gt;Use your own words, or use/edit the "official announcement" below. Post it on the NNTP forums, send emails, whatever you want. &lt;br /&gt;&lt;br /&gt;Your friends and colleagues will thank you!&lt;br /&gt;&lt;br /&gt;Here are two copies of the announcement, WYSIWYG and HTML...&lt;br /&gt;&lt;hr&gt;&lt;p&gt;&lt;b&gt;New website for SQL Anywhere questions and answers&lt;/b&gt;&lt;br /&gt;&lt;p&gt;One of the founding members of Team Sybase has started a moderated community-based website for questions and answers about SQL Anywhere and related topics: &lt;a href="http://sqla.stackexchange.com/"&gt;sqla.stackexchange.com&lt;/a&gt;&lt;br /&gt;&lt;p&gt;SQLA is hosted by the &lt;a href="http://www.stackexchange.com/"&gt;StackExchange&lt;/a&gt; service and it uses the same software as &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;SQLA is different from StackOverflow in several ways: in particular, discussions are encouraged and SQLA is moderated. &lt;br /&gt;&lt;p&gt;In other important ways, SQLA is the same as StackOverflow: it is (soon will be) Google-searchable, it will always be free to use, the reputation points and badge systems are the same, and free speech is protected (within the bounds of moderation).&lt;br /&gt;&lt;p&gt;(If you've never heard of &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;, you're in for a real treat! ...it's the best thing since Google, as far as technical question-and-answer services are concerned.)&lt;br /&gt;&lt;p&gt;Caveat Emptor: SQLA is currently in early beta testing... VERY early beta, where "early beta" means "likely to change". Not only is the SQLA site in beta, but so are the rules of moderation (see &lt;a href="http://sqla.stackexchange.com/faq"&gt;the unfinished FAQ&lt;/a&gt;), and so is the StackExchange service and the software it provides. Also, note that SQLA is not owned by Sybase.&lt;br /&gt;&lt;hr&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;HTML code... click on the "Copy" button over there ---&gt;&lt;/b&gt;&lt;pre class="brush: text"&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;New website for SQL Anywhere questions and answers&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;One of the founding members of Team Sybase has started a moderated community-based website for questions and answers about SQL Anywhere and related topics: &lt;a href="http://sqla.stackexchange.com/"&gt;sqla.stackexchange.com&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SQLA is hosted by the &lt;a href="http://www.stackexchange.com/"&gt;StackExchange&lt;/a&gt; service and it uses the same software as &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;SQLA is different from StackOverflow in several ways: in particular, discussions are encouraged and SQLA is moderated.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In other important ways, SQLA is the same as StackOverflow: it is (soon will be) Google-searchable, it will always be free to use, the reputation points and badge systems are the same, and free speech is protected (within the bounds of moderation).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;(If you've never heard of &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;, you're in for a real treat! ...it's the best thing since Google, as far as technical question-and-answer services are concerned.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Caveat Emptor: SQLA is currently in early beta testing... VERY early beta, where "early beta" means "likely to change". Not only is the SQLA site in beta, but so are the rules of moderation (see &lt;a href="http://sqla.stackexchange.com/faq"&gt;the unfinished FAQ&lt;/a&gt;), and so is the StackExchange service and the software it provides. Also, note that SQLA is not owned by Sybase.&lt;/p&gt;&lt;br /&gt;&lt;/pre&gt;&lt;hr&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-2251963070162490890?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/2251963070162490890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/tell-your-friends-about-sqla.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/2251963070162490890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/2251963070162490890'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/tell-your-friends-about-sqla.html' title='Tell your friends about SQLA'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-5106634989611694040</id><published>2009-11-10T05:13:00.004-05:00</published><updated>2009-11-22T03:52:51.080-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLA'/><title type='text'>"HOW DARE YOU!"</title><content type='html'>&lt;p&gt;&lt;a href="http://sqla.stackexchange.com/" target="_blank"&gt;The stack at SQLA&lt;/a&gt; is off to a good start, at least by SQL-Anywhere-forum standards: 7 questions, 8 answers in it's first day of operation, with only &lt;a href="http://sqlanywhere.blogspot.com/2009/11/sqlastackexchangecom.html" target="_blank"&gt;one announcement&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There's a bit of new material in &lt;a href="http://sqla.stackexchange.com/faq" target="_blank"&gt;the FAQ&lt;/a&gt;...&lt;ul&gt;&lt;li&gt;What kind of questions can I ask here?&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;How come other people can edit my stuff?&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;How does moderation work?&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Etymology Alert&lt;/b&gt;: I don't know if I'm the first one to use "stack" to refer to a hosted &lt;a href="http://www.stackexchange.com/" target="_blank"&gt;StackExchange.com&lt;/a&gt; site, but just in case I'm staking my claim here and now :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-5106634989611694040?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/5106634989611694040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/how-dare-you.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/5106634989611694040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/5106634989611694040'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/how-dare-you.html' title='&quot;HOW DARE YOU!&quot;'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-384222134788161734</id><published>2009-11-08T07:20:00.003-05:00</published><updated>2009-11-22T03:54:53.683-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLA'/><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>SQLA.StackExchange.com</title><content type='html'>&lt;p&gt;I'm a big fan of the rule "Don't announce a Beta until there's a Beta to announce" so here it is: &lt;blockquote&gt;&lt;a href="http://sqla.stackexchange.com/" target="_blank"&gt;a StackOverflow-style question-and-answer website dedicated to SQL Anywhere&lt;/a&gt;,&lt;/blockquote&gt;in beta.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Be the second person to ask a question!&lt;/h3&gt;&lt;br /&gt;Here's what it says in the "How to Ask" box:&lt;ul&gt;&lt;li&gt;Is your question about SQL Anywhere?&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;Technical questions should start with "How do I [do some thing]?"&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;Provide the version and build: SELECT @@VERSION&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;Discussions are welcome! (this is NOT StackOverflow)&lt;/li&gt;&lt;/ul&gt;Yes, &lt;a href="http://sqla.stackexchange.com/" target="_blank"&gt;SQLA.StackExchange.com&lt;/a&gt; is going to be different, different from StackOverflow.com, and &lt;b&gt;REALLY&lt;/b&gt; different from the NNTP newsgroups.&lt;br /&gt;For more information, check out the &lt;a href="http://sqla.stackexchange.com/questions/1/is-this-a-stackoverflow-for-sql-anywhere" target="_blank"&gt;first question and answer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;Here's a question that's not posted...&lt;br /&gt;&lt;br /&gt;Q: Why the name "SQLA" instead of "SQLAnywhere"?&lt;br /&gt;&lt;br /&gt;A: Let's just say we want to avoid any &lt;b&gt;Imperial entanglements&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-384222134788161734?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/384222134788161734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sqlastackexchangecom.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/384222134788161734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/384222134788161734'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sqlastackexchangecom.html' title='SQLA.StackExchange.com'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-8052358658830748834</id><published>2009-11-06T05:00:00.002-05:00</published><updated>2009-11-06T05:00:04.256-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL code'/><title type='text'>p_drop_other_connections</title><content type='html'>&lt;p&gt;This little procedure's been floating around for years and years, and the source code sits in various inaccessible places like &lt;a href="http://www.sybase.com/detail_list?id=11507&amp;multi=true&amp;SR=Y&amp;show=1255" target="_blank"&gt;the NNTP newsgroups&lt;/a&gt;, the execrable &lt;a href="http://www.sybase.com/developer/codexchange" target="_blank"&gt;CodeXchange&lt;/a&gt; and a sub-sub-sub-folder on my C drive called "miscellaneous".&lt;br /&gt;&lt;br /&gt;Time to put it somewhere accessible: Google. &lt;br /&gt;&lt;br /&gt;As in, "on an actual web page".&lt;br /&gt;&lt;br /&gt;As in, here...&lt;br /&gt;&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;How to get full control over a SQL Anywhere server&lt;/b&gt;&lt;pre class="brush: text"&gt;&lt;br /&gt;CREATE PROCEDURE p_drop_other_connections ()&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;/* How to get full control over a SQL Anywhere server...&lt;br /&gt;&lt;br /&gt;(1) CALL sa_server_option ( 'ConnsDisabled', 'ON' );&lt;br /&gt;&lt;br /&gt;    At this point, any attempt to open a new connection will&lt;br /&gt;    get "Connections to database have been disabled". &lt;br /&gt;    However, current connections will still work until...&lt;br /&gt;&lt;br /&gt;(2) CALL p_drop_other_connections(); &lt;br /&gt;&lt;br /&gt;(3) Do whatever you need to do.&lt;br /&gt;&lt;br /&gt;(4) CALL sa_server_option ( 'ConnsDisabled', 'OFF' );&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;DECLARE @this_connection_id    INTEGER;&lt;br /&gt;DECLARE @other_connection_id   INTEGER;&lt;br /&gt;DECLARE @drop_command          VARCHAR ( 1000 );&lt;br /&gt;&lt;br /&gt;SET @this_connection_id  = connection_property ( 'number' );&lt;br /&gt;SET @other_connection_id = NEXT_CONNECTION ( NULL );&lt;br /&gt;&lt;br /&gt;WHILE @other_connection_id IS NOT NULL LOOP&lt;br /&gt;&lt;br /&gt;   IF @other_connection_id &lt;&gt; @this_connection_id THEN&lt;br /&gt;      SET @drop_command = STRING ( &lt;br /&gt;         'DROP CONNECTION ', &lt;br /&gt;         @other_connection_id );&lt;br /&gt;      EXECUTE IMMEDIATE @drop_command;&lt;br /&gt;   END IF;&lt;br /&gt;&lt;br /&gt;   SET @other_connection_id &lt;br /&gt;      = NEXT_CONNECTION ( @other_connection_id ) &lt;br /&gt;&lt;br /&gt;END LOOP;&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-8052358658830748834?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/8052358658830748834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/pdropotherconnections.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/8052358658830748834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/8052358658830748834'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/pdropotherconnections.html' title='p_drop_other_connections'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-1746028547840470328</id><published>2009-11-05T15:09:00.000-05:00</published><updated>2009-11-05T15:10:21.414-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>And yet ANOTHER beta (UltraLiteWeb)</title><content type='html'>&lt;p&gt;If iAnywhere Solutions ever put on a standalone SQL Anywhere Developer Conference (they won't, alas), Eric Farrar would be enough of a "big name draw" to pack the place. Anyone else on the agenda would be icing on the cake.&lt;br /&gt;&lt;br /&gt;Let me put it this way: If, after hearing an Eric Farrar presentation, you're not more enthusiastic about your job and about SQL Anywhere, you need medical attention.&lt;br /&gt;&lt;br /&gt;Eric Farrar creates cool stuff. Eric Farrar makes SQL Anywhere dance and sing.&lt;blockquote&gt;(Right about now, his co-workers are probably saying, "Look, Eric, Breck has a man-crush on you!")&lt;blockquote&gt;&lt;i&gt;Not true. If I was going to have a man-crush on anyone, it would be Brad Pitt.&lt;/i&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;h3&gt;ANYway...&lt;/h3&gt; You don't need to wait for any conference, you can see the &lt;a href="http://iablog.sybase.com/efarrar/2009/11/introducing-ultraliteweb-taking-data-further/" target="_blank"&gt;latest of Eric's offerings here&lt;/a&gt;... UltraLite replacing SQLite in Google Gears... a browser-side SQL Anywhere database, with MobiLink synchronization. Woohoo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-1746028547840470328?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/1746028547840470328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/and-yet-another-beta-ultraliteweb.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/1746028547840470328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/1746028547840470328'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/and-yet-another-beta-ultraliteweb.html' title='And yet ANOTHER beta (UltraLiteWeb)'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-801775171763834312</id><published>2009-11-04T10:29:00.000-05:00</published><updated>2009-11-04T10:30:17.894-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>Sybase Smooths Enterprise Path for IPhones</title><content type='html'>&lt;p&gt;&lt;a href="http://www.pcworld.com/article/181338/sybase_smooths_enterprise_path_for_iphones.html" target="_blank"&gt;In PC World...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pcworld.com/article/181338/sybase_smooths_enterprise_path_for_iphones.html" target="_blank"&gt;&lt;img src="http://3.bp.blogspot.com/_H2KjtJnsvcU/SvGdC0KwQNI/AAAAAAAAA5c/5jIM_UYxMYg/s1600/Sybase%2BSmooths%2BEnterprise%2BPath%2Bfor%2BIPhones.jpg" width="613" height="508" title="In PC World: Sybase Smooths Enterprise Path for IPhones"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-801775171763834312?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/801775171763834312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sybase-smooths-enterprise-path-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/801775171763834312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/801775171763834312'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/sybase-smooths-enterprise-path-for.html' title='Sybase Smooths Enterprise Path for IPhones'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_H2KjtJnsvcU/SvGdC0KwQNI/AAAAAAAAA5c/5jIM_UYxMYg/s72-c/Sybase%2BSmooths%2BEnterprise%2BPath%2Bfor%2BIPhones.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-3854163392535308587</id><published>2009-11-04T05:17:00.005-05:00</published><updated>2009-11-06T06:47:54.434-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>A REAL Database For The iPhone</title><content type='html'>&lt;p&gt;The SQL Anywhere for the iPhone Beta has started; &lt;a href="http://www.sybase.com/sqlanyiphone" target="_blank"&gt;sign up here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sybase.com/sqlanyiphone" target="_blank"&gt;&lt;img src="http://3.bp.blogspot.com/_H2KjtJnsvcU/SvCTrYPblbI/AAAAAAAAA5E/m8k5q1ZFm-c/s1600/sql_anywhere_iphone_beta.jpg" width="600" height="125" title="SQL Anywhere for the iPhone Beta"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Soon, there's going to be a &lt;b&gt;"Tutorial: Build an iPhone application"&lt;/b&gt; on DocCommentXChange, alongside the current &lt;a href="http://dcx.sybase.com/1101en/ulj_en11/uj-ch03.html" target="_blank"&gt;Tutorial: Build a BlackBerry application&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dcx.sybase.com/1101en/ulj_en11/uj-ch03.html" target="_blank"&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/SvFSxpCgsqI/AAAAAAAAA5M/Q-lAYAQDQ-U/s1600/Tutorial%2BBuild%2Ba%2BBlackberry%2Bapplication.jpg" width="789" height="411" title="Tutorial: Build a Blackberry application"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Guessing Game&lt;/h3&gt;&lt;br /&gt;What will be the DocCommentXChange url be, for &lt;b&gt;"Tutorial: Build an iPhone application"&lt;/b&gt;, when it goes GA?&lt;br /&gt;&lt;br /&gt;Here's my guess: &lt;a href="http://dcx.sybase.com/1200en/ulj_en12/uj-ch04.html" target="_blank"&gt;http://dcx.sybase.com/1200en/ulj_en12/uj-ch04.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's my second guess: &lt;a href="http://dcx.sybase.com/1102en/ulj_en11/uj-ch04.html" target="_blank"&gt;http://dcx.sybase.com/1102en/ulj_en11/uj-ch04.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What's your guess?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-3854163392535308587?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/3854163392535308587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/real-database-for-iphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/3854163392535308587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/3854163392535308587'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/real-database-for-iphone.html' title='A REAL Database For The iPhone'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_H2KjtJnsvcU/SvCTrYPblbI/AAAAAAAAA5E/m8k5q1ZFm-c/s72-c/sql_anywhere_iphone_beta.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-6433036450004831876</id><published>2009-11-02T10:43:00.000-05:00</published><updated>2009-11-02T10:44:47.992-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance and tuning'/><title type='text'>Boot-Time Defragmentation</title><content type='html'>&lt;p&gt;I wish I had lots and lots of money to buy new equipment every few months, but I don't, never have, so I tend to use computers long past their "Best Before" dates. &lt;br /&gt;&lt;br /&gt;Like the &lt;a href="http://www.pcmag.com/article2/0,2817,1706540,00.asp" target="_blank"&gt;HP Pavilion zd8000&lt;/a&gt; laptop I'm working on right now.&lt;br /&gt;&lt;br /&gt;Yes, in these modern days of &lt;a href="http://windows.microsoft.com/en-us/windows7/products/features/64-bit-support" target="_blank"&gt;64-bit Windows 7&lt;/a&gt; and Core 2 Duo processors and giant drives, I'm running Windows XP on a 3.4GHz Pentium 4 with 2G (gasp!) of RAM and a 100G drive. It's my "main machine", the one I lug around to clients, the one I do almost all of my work on. With seven different versions of SQL Anywhere, plus Oracle 10g, SQL Server 2008, Visual Studio, blah blah blah... hundreds and hundreds of thousands of files.&lt;blockquote&gt;&lt;i&gt;And yes, my computer runs hot. Much too hot to hold in my lap. I even carry a little portable fan with me, to keep it from overheating and shutting down. And battery life sucks, less than one hour on a brand-new battery. But it's fast, fast, fast... &lt;br /&gt;&lt;br /&gt;mostly...&lt;/i&gt;&lt;/blockquote&gt;Over time, as more and more software is installed and removed, more files created and destroyed, performance on this laptop starts to slip. Such was the case this weekend when it became just &lt;b&gt;too&lt;/b&gt; unbearable to wait 10 or 20 seconds for Wordpad to open a tiny text file.&lt;blockquote&gt;&lt;i&gt;Memories of mainframe, memories of 4.77Mhz.&lt;/i&gt;&lt;/blockquote&gt;No, there's no viruses or spyware or rootkits running, the router and firewall and &lt;a href="http://www.symantec.com/norton360/" target="_blank"&gt;Norton 360&lt;/a&gt; and &lt;a href="http://windowsupdate.microsoft.com" target="_blank"&gt;Windows Update&lt;/a&gt; take care of that. No apparent disk fragmentation, &lt;a href="http://www.diskeeper.com/" target="_blank"&gt;Diskeeper&lt;/a&gt; takes care of that (every time the screen saver kicks in, Diskeeper does some defragmentation).&lt;br /&gt;&lt;br /&gt;I say "apparent" because if you go hunting around in the Diskeeper menus, you see there's a feature called "boot-time defragmentation"...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_H2KjtJnsvcU/Su72uRfGFMI/AAAAAAAAA4s/Lf7pCf3rRcI/s1600/Schedule%2BBoot-Time%2BDefragmentation.jpg" width="478" height="584" title="Schedule Boot-Time Defragmentation"&gt;&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; Don't check "Produce a summary log file" if you don't have a locally-attached drive that will be available during the boot period, &lt;b&gt;other&lt;/b&gt; than the drive being defragmented. In other words, no network drives and (I think) no USB drives. Diskeeper won't warn you, but the boot-time defragmentation will skip most of the steps and you'll have to start over. You can specify a floppy drive A:, but who has floppies any more? No summary log for me, my laptop only has the C: drive.&lt;/blockquote&gt;The Diskeeper docs promise that the boot-time defragmentation process will do lot of work the regular defragmentation doesn't do, and that does seem to be the case. The reboot process took longer than an hour including before-and-after CHKDSK runs; the hard drive light was on solid for the whole time.&lt;br /&gt;&lt;br /&gt;Here's part of the display output:&lt;br /&gt;&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;Boot-time Defragmentation Report&lt;/b&gt;&lt;pre class="brush: text"&gt;&lt;br /&gt;*** STAGE 0 ***&lt;br /&gt;Stage skipped; MFT already defragmented.&lt;br /&gt;&lt;br /&gt;*** STAGE 1 ***&lt;br /&gt;Moved 3 files&lt;br /&gt;Moved 1 attributes&lt;br /&gt;&lt;br /&gt;*** STAGE 2 ***&lt;br /&gt;Info: Paging file is not fragmented; skipping paging file processing&lt;br /&gt;Located 335866 files...&lt;br /&gt;Need 53421 clusters for folders &amp; attributes&lt;br /&gt;&lt;br /&gt;*** STAGE 3 ***&lt;br /&gt;[xx%] Moving data file&lt;br /&gt;Moved 12011 files from consolidation target areas&lt;br /&gt;&lt;br /&gt;*** STAGE 4 ***&lt;br /&gt;[xx%] Moving folder file&lt;br /&gt;Moved 4417 folders to target area&lt;br /&gt;Moved 5 attributes to target area&lt;br /&gt;&lt;br /&gt;*** STAGE 5 ***&lt;br /&gt;Moved 4 files&lt;br /&gt;Moved 1 attributes&lt;br /&gt;&lt;br /&gt;Contiguous Uncompressed Folders Moved: ..........................     4524&lt;br /&gt;Contiguous Uncompressed Files Moved: ............................    10805&lt;br /&gt;Non-resident Attributes Moved: ..................................       10&lt;br /&gt;Contiguous Compressed Folders Moved: ............................      206&lt;br /&gt;Contiguous Compressed Files Moved: ..............................      875&lt;br /&gt;Fragmented Compressed Folders Moved: ............................        1&lt;br /&gt;Fragmented Compressed Files Moved: ..............................       24&lt;br /&gt;&lt;br /&gt;Diskeeper boot-time processing completed.&lt;br /&gt;Press ESC to reboot system.&lt;br /&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; When Windows asks to run CHKDSK because "One of your disks needs to be checked for consistency", let it run. Otherwise, Diskeeper will refuse to run any regular defragmentation steps and you'll have to reboot and let CHKDSK run.&lt;/blockquote&gt;After the boot-time defragmentation Diskeeper still showed a few "Pink - low performing system files"; not a lot, and &lt;b&gt;much fewer&lt;/b&gt; than beforehand. Another regular defragmentation run got rid of almost all the pink areas, now it's all beautiful "Blue - high performing files and folders"...&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/Su73GlzjR7I/AAAAAAAAA40/pxlfceDaG3g/s1600/Diskeeper%2BPerformance%2BMap.jpg" width="848" height="485" title="Boot-time Defragmentation"&gt;&lt;br /&gt;&lt;br /&gt;I don't have screenshots from before all this, but here's what it looked like beforehand:&lt;ul&gt;&lt;li&gt;No "Red - low performing files and folders" at all, probably because Diskeeper runs regularly during screen saver periods, but&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;A large number of "Pink - low performing system files" areas that did not go away no matter how many times I did full manual Diskeeper defragmentations.&lt;/li&gt;&lt;/ul&gt;So how's performance now? A lot snappier, files and folders seem to open much more quickly, or so it seems. No hard numbers though :)&lt;blockquote&gt;&lt;b&gt;Tip:&lt;/b&gt; There's a wealth of information about Windows disk fragmentation on the &lt;a href="http://www.diskeeper.com/" target="_blank"&gt;Diskeeper&lt;/a&gt; site, including &lt;a href="http://downloads.diskeeper.com/pdf/Diskeeper2009-MythsOfFragmentation.pdf" target="_blank"&gt;Myths of Fragmentation&lt;/a&gt; which includes this gem: &lt;i&gt;"A freshly-installed operating system starts off with its files so badly fragmented that a simple defragmentation can decrease the boot time from 153.9 seconds to 111.8 seconds."&lt;/i&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-6433036450004831876?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/6433036450004831876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/boot-time-defragmentation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6433036450004831876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6433036450004831876'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/11/boot-time-defragmentation.html' title='Boot-Time Defragmentation'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_H2KjtJnsvcU/Su72uRfGFMI/AAAAAAAAA4s/Lf7pCf3rRcI/s72-c/Schedule%2BBoot-Time%2BDefragmentation.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-1160431281317997112</id><published>2009-10-30T13:30:00.000-04:00</published><updated>2009-10-30T13:31:16.122-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server setup and admin'/><title type='text'>Navigation to the webpage was canceled</title><content type='html'>&lt;p&gt;For many years, SQL Anywhere has used &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help" target="_blank"&gt;Microsoft Compiled HTML Help files (*.chm)&lt;/a&gt; to deliver all the manuals in one easy-to-read, easy-to-search package on your desktop, one that doesn't make you wander through endless menus and wait for slow-loading web pages.&lt;br /&gt;&lt;br /&gt;These files are easy to copy, too, and sometimes folks copy the Help files from machine to machine without using the official SQL Anywhere setup.exe... and they zip them up and send them by email as well.&lt;br /&gt;&lt;br /&gt;Suddenly, however, that process has become fraught with error: On the receiving end, when you open the *.chm file, you get "Navigation to the webpage was canceled" no matter which topic you navigate to:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_H2KjtJnsvcU/Surq1rv9AlI/AAAAAAAAA38/rMH3JH2k5a0/s1600/Navigation%2Bto%2Bthe%2Bwebpage%2Bwas%2Bcancelled.gif" width="733" height="342" title="Navigation to the webpage was canceled"&gt;&lt;br /&gt;&lt;br /&gt;Steven McDowell has the answer (and by the way, the problem DOES NOT AFFECT files installed by the official setup):&lt;br /&gt;&lt;hr&gt;from Steven McDowell &lt;br /&gt;to Breck Carter&lt;br /&gt;date Wed, Oct 28, 2009 at 5:11 PM&lt;br /&gt;subject Files downloaded from our FTP site can be "blocked" on XP/Vista/Win 7&lt;br /&gt; &lt;br /&gt;Hi Breck,&lt;br /&gt;&lt;br /&gt;FYI ... my investigation of your "blocked" CHMs seems to have determined what is going on.&lt;br /&gt;&lt;br /&gt;Steve &lt;br /&gt;&lt;br /&gt;It appears that a recent Windows security update may have further restricted the use of CHM files on XP and Vista. I don't know if other file types are affected by this, but I thought I would share the info since we often ZIP files and send them via FTP to customers and other staff.&lt;br /&gt;&lt;br /&gt;Sneak peak: It actually appears to be an IE "feature". That's all you get here. See conclusion at bottom. :-)&lt;br /&gt;&lt;br /&gt;It was reported that our CHM docs failed to open on an XP computer. The CHMs had been zipped here and copied via FTP. When they were unzipped, they were marked as "blocked" and the contents could not be viewed until each file was unblocked.&lt;br /&gt;&lt;br /&gt;I have reproduced the problem on my Windows 7 system. I am an administrator but still have UAC turned on. Here is what I encountered:&lt;br /&gt;&lt;BLOCKQUOTE&gt;* Unzipping to a local temp folder proceeds normally.&lt;/BLOCKQUOTE&gt;&lt;BLOCKQUOTE&gt;* When I try to open one of the CHMs, I get:&lt;/BLOCKQUOTE&gt;&lt;img src="http://3.bp.blogspot.com/_H2KjtJnsvcU/SurrQdvVuaI/AAAAAAAAA4E/SZ8sXiR6xvw/s1600/Do%2Byou%2Bwant%2Bto%2Bopen%2Bthis%2Bfile.gif" width="414" height="310" title="Do you want to open this file"&gt;&lt;BLOCKQUOTE&gt;* If I leave the "Always ask" checkbox checked and click Open, the CHM opens, but the contents pane is blocked (with an unhelpful message). This behaviour is the same as trying to open a CHM from a network drive, but this is happening on a local drive.&lt;/BLOCKQUOTE&gt;&lt;img src="http://4.bp.blogspot.com/_H2KjtJnsvcU/Surq1rv9AlI/AAAAAAAAA38/rMH3JH2k5a0/s1600/Navigation%2Bto%2Bthe%2Bwebpage%2Bwas%2Bcancelled.gif" width="733" height="342" title="Navigation to the webpage was canceled"&gt;&lt;br /&gt;&lt;BLOCKQUOTE&gt;* As long as the "Always ask" checkbox is checked, the contents pane is blocked for that file regardless of how many times you try to open it. Once I uncheck the box and click Open, not one but two things happen: 1) the contents pane is visible, and, 2) the dialog no longer appears. So something in the file's attributes has changed permanently.&lt;/BLOCKQUOTE&gt;&lt;img src="http://3.bp.blogspot.com/_H2KjtJnsvcU/SurrgxW75wI/AAAAAAAAA4M/MgIquLt7l4g/s1600/Successful%2Bdisplay%2Bof%2Bchm%2Bfile.gif" width="853" height="403" title="Successful display of chm file"&gt;&lt;br /&gt;&lt;BLOCKQUOTE&gt;* I picked another CHM file that had not been opened yet. I displayed its Properties. Note the Unblock button and the text to the left. This button and text are not displayed in the Properties for CHMs that were opened with the checkbox turned off. So, the "Always ask" checkbox has the dual purpose of suppressing the dialog and marking the file as unblocked.&lt;/BLOCKQUOTE&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/Surr768uhxI/AAAAAAAAA4U/IbpjZruLW4o/s1600/chm%2Bfile%2BProperties.gif" width="377" height="515" title="chm file Properties"&gt;&lt;br /&gt;&lt;br /&gt;Fortunately, it appears that using our doc install does not trigger this blocking problem. There is the possibility that other file types sent via ZIP (and probably other file copy methods) will also encounter these issues.&lt;br /&gt;&lt;br /&gt;I did find one discussion (in the &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/6393365a-272e-4da2-9cd1-c3b63f4929b4" target="_blank"&gt;social.msdn.microsoft.com&lt;/a&gt; link below) that suggests it is IE that is noting that the files came from "the Internet" and marking them as blocked. I'm not sure how that works inside a ZIP file, but it appears to. Possibly non-IE transfers will not do this. CONFIRMED! I downloaded the same ZIP file via FTP using Firefox instead of IE and the files are not blocked!&lt;br /&gt;&lt;br /&gt;Relevant URLs (Google "windows chm file blocked"):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/896054/" target="_blank"&gt;http://support.microsoft.com/kb/896054/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/902225" target="_blank"&gt;http://support.microsoft.com/kb/902225&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.drexplain.com/press/chm-files-the-page-cannot-be-displayed-error/" target="_blank"&gt;http://www.drexplain.com/press/chm-files-the-page-cannot-be-displayed-error/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/6393365a-272e-4da2-9cd1-c3b63f4929b4" target="_blank"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/6393365a-272e-4da2-9cd1-c3b63f4929b4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Steve&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-1160431281317997112?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/1160431281317997112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/navigation-to-webpage-was-canceled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/1160431281317997112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/1160431281317997112'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/navigation-to-webpage-was-canceled.html' title='Navigation to the webpage was canceled'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_H2KjtJnsvcU/Surq1rv9AlI/AAAAAAAAA38/rMH3JH2k5a0/s72-c/Navigation%2Bto%2Bthe%2Bwebpage%2Bwas%2Bcancelled.gif' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-6410187236757534241</id><published>2009-10-28T09:48:00.001-04:00</published><updated>2009-10-28T09:57:07.380-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server setup and admin'/><title type='text'>Comparing Database Schemas, Improved Edition</title><content type='html'>&lt;p&gt;The &lt;a href="http://sqlanywhere.blogspot.com/2008/08/comparing-database-schemas.html" target="_blank"&gt;original version of this article&lt;/a&gt; contained this false statement: &lt;i&gt;"These dbunload steps ... only work on Version 10 and 11 databases ..."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Well, not exactly &lt;b&gt;false&lt;/b&gt;, but easily fixed so the technique will work on earlier database files: Versions 5.5, 6, 7, 8 and 9. It turns out that while the Version 11 engine can't run a Version 9 database file, that restriction does not apply to the dbunload utility. In order to facilitate database migrations, dbunload contains the ability to read earlier database files... and that ability extends to ordinary dbunload-to-a-SQL-file steps.&lt;br /&gt;&lt;br /&gt;And that bit of magic makes it possible to compare all versions of databases. Here's the full rewrite of the original article:&lt;br /&gt;&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;&lt;b&gt;Question:&lt;/b&gt; How do I compare the schemas of two SQL Anywhere databases?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Answer,&lt;/b&gt; from Bruce Hay at Sybase iAnywhere: Check out the new "-no" option for dbunload in SQL Anywhere 11 (unload objects in name order, no data)? It's intended for this purpose.&lt;br /&gt;&lt;br /&gt;&lt;HR&gt;&lt;br /&gt;Here's how it works: &lt;ul&gt;&lt;li&gt;Step 1: Run dbunload against the first SQL Anywhere database to create a text file containing CREATE TABLE and other schema definitions. The new -no option tells dbunload to unload just the schema, not the data, and do it in name order so it will be easier to compare with another text file sorted in the same order.&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;Step 2: Run dbunload again, on the second SQL Anywhere database, to produce another text file. &lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;Step 3: Run a text comparison utility like &lt;a href="http://www.grigsoft.com/" target="_blank"&gt;Compare It!&lt;/a&gt; to show the differences between the two text files.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;i&gt;[ Keep reading, the new stuff is coming soon... ]&lt;/i&gt;&lt;/blockquote&gt;Here's why using dbunload is a good approach:&lt;ul&gt;&lt;li&gt;The dbunload utility doesn't miss anything; it unloads every single schema object in the database... tables, views, procedures, triggers, everything.&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;The dbunload utility is always going to be more up-to-date than any other software except the SQL Anywhere engine itself. In other words, even PowerDesigner falls behind dbunload in terms of supporting SQL Anywhere syntax for new features.&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;Running dbunload on actual databases guarantees you will be comparing the current database schemas, not out-of-date information stored is separate model files.&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;The text file comparison view presents differences in terms of actual database syntax, not some funky abstract logical view used by data modelling tools.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;i&gt;[ OK, here comes the new stuff... ]&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;But Wait! It's Not Quite That Easy!&lt;/h3&gt;&lt;br /&gt;How you code the "Run dbunload" parts of Steps 1 and 2 depends on what version of SQL Anywhere was used to create each database:&lt;ul&gt;&lt;li&gt;If the database was created with Version 5.5, 6, 7, 8 or 9 you have to run the Version 11 copy of dbunload.exe without starting the database first. Use the -c "DBF=filespec.db;UID=xxx;PWD=yyy" connection string so that the Version 9 engine inside dbunload.exe will be used to start the database. Yes, this is magic!&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;If the database was created with Version 10 or 11, you do have to start the database first, using the Version 11 engine dbeng11.exe or dbsrv11.exe, and then run the Version 11 copy of dbunload.exe with the usual client-server connection string -c "ENG=aaa;DBN=bbb;UID=xxx;PWD=yyy". &lt;/li&gt;&lt;/ul&gt;That's not just magic, it's also complicated and confusing. That's why I've created three examples you can copy and edit: Compare Version 10 and 11 databases using the second technique described above, then Version 5.5 with Version 9 using the first technique, and finally Version 5.5 with Version 11 using both techniques. These examples all use the demo databases that come with the various versions of SQL Anywhere.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Example 1: Compare Version 10 and 11 Database Schemas&lt;/h3&gt;&lt;br /&gt;This script is easily changed to work with two Version 10 databases, or two Version 11 databases.&lt;br /&gt;&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;compare_demo10_demo11.bat&lt;/b&gt;&lt;pre class="brush: text"&gt;REM Start V10 database via V11 engine&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\bin32\dbspawn.exe"^&lt;br /&gt;  -f^&lt;br /&gt;  "%SQLANY11%\bin32\dbeng11.exe"^&lt;br /&gt;  -n demo10^&lt;br /&gt;  "C:\Documents and Settings\All Users\Documents\SQL Anywhere 10\Samples\demo.db"&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Unload V10 database&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\Bin32\dbunload.exe"^&lt;br /&gt;  -c "ENG=demo10;DBN=demo;UID=dba;PWD=sql"^&lt;br /&gt;  -no^&lt;br /&gt;  -r c:\temp\demo10.sql&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Start V11 database&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\bin32\dbspawn.exe"^&lt;br /&gt;  -f^&lt;br /&gt;  "%SQLANY11%\Bin32\dbeng11.exe"^&lt;br /&gt;  -n demo11^&lt;br /&gt;  "C:\Documents and Settings\All Users\Documents\SQL Anywhere 11\Samples\demo.db"&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Unload V11 database&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\Bin32\dbunload.exe"^&lt;br /&gt;  -c "ENG=demo11;DBN=demo;UID=dba;PWD=sql"^&lt;br /&gt;  -no^&lt;br /&gt;  -r c:\temp\demo11.sql&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Compare schemas&lt;br /&gt;&lt;br /&gt;"C:\Program Files\Compare It!\wincmp3.exe"^&lt;br /&gt;  c:\temp\demo10.sql^&lt;br /&gt;  c:\temp\demo11.sql &lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;/pre&gt;Here's what Compare It! shows for one difference:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/Sug_QGen5TI/AAAAAAAAA3c/RZy_X7tZZsI/s1600/Compare%2BIt!%2Bdemo10%2Bdemo11.jpg" width="1112" height="401" title="Compare It! demo10 demo11"&gt;&lt;br /&gt;&lt;br /&gt;Compare It! can also produce a report in HTML format; just use File - Report... to get output like this:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_H2KjtJnsvcU/Sug_ki2ANII/AAAAAAAAA3k/Nr1_E4_sZdI/s1600/Compare%2BIt!%2Bdemo10%2Bdemo11%2BHTML.jpg" width="791" height="429" title="Compare It! demo10 demo11 HTML"&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Example 2: Compare Version 5.5 and 9 Database Schemas&lt;/h3&gt;&lt;br /&gt;This script is easily changed to work with two Version 9 databases, or any combination of Version 5.5 through 9.&lt;br /&gt;&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;compare_demo5_demo9.bat&lt;/b&gt;&lt;pre class="brush: text"&gt;REM Start and unload V5 database via V11 dbunload&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\Bin32\dbunload.exe"^&lt;br /&gt;  -c "DBF=C:\Program Files\Sybase\SQL Anywhere 5.0\sademo.db;UID=dba;PWD=sql"^&lt;br /&gt;  -no^&lt;br /&gt;  -r c:\temp\demo5.sql&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Start and unload V9 database via V11 dbunload&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\Bin32\dbunload.exe"^&lt;br /&gt;  -c "DBF=C:\Program Files\Sybase\SQL Anywhere 9\asademo.db;UID=dba;PWD=sql"^&lt;br /&gt;  -no^&lt;br /&gt;  -r c:\temp\demo9.sql&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Compare schemas&lt;br /&gt;&lt;br /&gt;"C:\Program Files\Compare It!\wincmp3.exe"^&lt;br /&gt;  c:\temp\demo5.sql^&lt;br /&gt;  c:\temp\demo9.sql &lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here's a Compare It! screen shot:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/Sug_3-UA0gI/AAAAAAAAA3s/J7avJNBQVrI/s1600/Compare%2BIt!%2Bdemo5%2Bdemo9.jpg" width="1021" height="401" title="Compare It! demo5 demo9"&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Example 3: Compare Version 5.5 and 11 Database Schemas&lt;/h3&gt;&lt;br /&gt;This script is easily changed to compare a Version 5.5 through 9 database with a Version 10 or 11 database.&lt;br /&gt;&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;compare_demo5_demo11.bat&lt;/b&gt;&lt;pre class="brush: text"&gt;REM Start and unload V5 database via V11 dbunload&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\Bin32\dbunload.exe"^&lt;br /&gt;  -c "DBF=C:\Program Files\Sybase\SQL Anywhere 5.0\sademo.db;UID=dba;PWD=sql"^&lt;br /&gt;  -no^&lt;br /&gt;  -r c:\temp\demo5.sql&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Start V11 database&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\bin32\dbspawn.exe"^&lt;br /&gt;  -f^&lt;br /&gt;  "%SQLANY11%\Bin32\dbeng11.exe"^&lt;br /&gt;  -n demo11^&lt;br /&gt;  "C:\Documents and Settings\All Users\Documents\SQL Anywhere 11\Samples\demo.db"&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;REM Unload V11 database&lt;br /&gt;&lt;br /&gt;"%SQLANY11%\Bin32\dbunload.exe"^&lt;br /&gt;  -c "ENG=demo11;DBN=demo;UID=dba;PWD=sql"^&lt;br /&gt;  -no^&lt;br /&gt;  -r c:\temp\demo11.sql&lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;br /&gt;"C:\Program Files\Compare It!\wincmp3.exe"^&lt;br /&gt;  c:\temp\demo5.sql^&lt;br /&gt;  c:\temp\demo11.sql &lt;br /&gt;&lt;br /&gt;PAUSE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This Compare It! screen shot shows where the schema starts to diverge; after this point, everything's different between the Version 5.5 and 11 demo databases:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_H2KjtJnsvcU/SuhAMca0lyI/AAAAAAAAA30/bIbcsETUIP8/s1600/Compare%2BIt!%2Bdemo5%2Bdemo11.jpg" width="1112" height="401" title="Compare It! demo5 demo11"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-6410187236757534241?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/6410187236757534241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/comparing-database-schemas-improved.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6410187236757534241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6410187236757534241'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/comparing-database-schemas-improved.html' title='Comparing Database Schemas, Improved Edition'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_H2KjtJnsvcU/Sug_QGen5TI/AAAAAAAAA3c/RZy_X7tZZsI/s72-c/Compare%2BIt!%2Bdemo10%2Bdemo11.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-7624674915835612743</id><published>2009-10-26T05:00:00.002-04:00</published><updated>2009-10-26T05:00:04.252-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>DocCommentXchange 2.0 Rocks!</title><content type='html'>&lt;p&gt;&lt;a href="http://dcx.sybase.com/dcx_home.html" target="_blank"&gt;&lt;img src="http://3.bp.blogspot.com/_H2KjtJnsvcU/SuNOkHlRs0I/AAAAAAAAA3M/9U8QKM39Y3E/s1600/Welcome%2Bto%2BDocCommentXchange%2B2.0.jpg" width="476" height="286" title="Welcome to DocCommentXchange 2.0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will let &lt;b&gt;Laura Nevin, Shengyu Bao, Andrew Arnott and Steven McDowell&lt;/b&gt; tell the story:&lt;blockquote&gt;From: Steven.McDowell@sybase.com&lt;br /&gt;Sent: Friday, October 23, 2009 11:54 AM&lt;br /&gt;Subject: &lt;a href="http://dcx.sybase.com/dcx_home.html" target="_blank"&gt;DocCommentXchange 2.0 is now live&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hi Breck,&lt;br /&gt;&lt;br /&gt;I think this is what you have been waiting for. It took way longer than expected, but I think the internal improvements were worth the wait.&lt;br /&gt;&lt;br /&gt;Please email me if you have any problems or issues, or even comments about DCX.&lt;br /&gt;&lt;br /&gt;Steve&lt;br /&gt;&lt;br /&gt;----- Forwarded by Steven McDowell/SYBASE on 10/23/2009 11:53 AM -----&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dcx.sybase.com/dcx_home.html" target="_blank"&gt;DocCommentXchange 2.0 is now running at dcx.sybase.com.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Main new features:&lt;blockquote&gt;* based on SA11 web server and full text search (no Apache or PHP)&lt;br /&gt;* preview area added to "Submit a comment" dialog; your comment is formatted and displayed while you type&lt;br /&gt;* index is much faster now&lt;br /&gt;* bookmarks for pages are more readable&lt;/blockquote&gt;Other notes:&lt;blockquote&gt;* existing URLs remain valid&lt;br /&gt;* existing comments are preserved&lt;br /&gt;* existing userids remain valid&lt;/blockquote&gt;Steve, Laura, Andrew, Shengyu&lt;/blockquote&gt;&lt;a href="http://dcx.sybase.com/index.html#1101en/sachanges_en11/new1101-s-3563124.html" target="_blank"&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/SuNRJTf3SjI/AAAAAAAAA3U/0qyLftUzAeI/s1600/Whats%2BNew%2BSQL%2BStatements.jpg" width="821" height="494" title="What's New - SQL Statements"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-7624674915835612743?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/7624674915835612743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/doccommentxchange-20-rocks.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7624674915835612743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7624674915835612743'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/doccommentxchange-20-rocks.html' title='DocCommentXchange 2.0 Rocks!'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_H2KjtJnsvcU/SuNOkHlRs0I/AAAAAAAAA3M/9U8QKM39Y3E/s72-c/Welcome%2Bto%2BDocCommentXchange%2B2.0.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-7446438452173893882</id><published>2009-10-23T11:32:00.001-04:00</published><updated>2009-10-23T11:32:17.762-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance and tuning'/><title type='text'>How To Capture A Graphical Plan</title><content type='html'>&lt;p&gt;Graphical plans are wonderful things. Graphical plans tell you everything you need to know about why a query is running slowly.&lt;br /&gt;&lt;br /&gt;Even if you don't have a clue about how to read a graphical plan, it's still wonderful because you can capture it in a file and send it to someone who &lt;b&gt;does&lt;/b&gt; know how to read it ( like Glenn Paulley ) or someone like [cough] who pretends to know :)&lt;br /&gt;&lt;br /&gt;Seriously, let's say you have The Query From Hell, some SELECT that's taking forever. Maybe yesterday (on SQL Anywhere 9) it ran quickly but now (on SQL Anywhere 11) it runs like continental drift... or whatever, it's slow now.&lt;br /&gt;&lt;br /&gt;Here are the steps for capturing the graphical plan, for Versions 8 through 11. At the bottom there's a "Tip" that is very important, but only for Version 10 and earlier.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;How To Capture A Graphical Plan In Version 11&lt;/h3&gt;&lt;br /&gt; - If desired, run CALL sa_flush_cache() in dbisql.&lt;br /&gt;&lt;br /&gt; - Type or paste your query into dbisql.&lt;br /&gt;&lt;br /&gt; - Choose Tools - Plan Viewer.&lt;br /&gt;&lt;br /&gt; - Select Statisics level: Detailed and node statistics.&lt;br /&gt;&lt;br /&gt; - Select Cursor type: Asensitive.&lt;br /&gt;&lt;br /&gt; - Select Update status: Read-only.&lt;br /&gt;&lt;br /&gt; - Click "Get Plan".&lt;br /&gt;&lt;br /&gt; - When the plan appears, click "Save As...".&lt;br /&gt;&lt;br /&gt; - Use Save as type Execution plan (*.saplan).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;How To Capture A Graphical Plan In Version 10&lt;/h3&gt;&lt;br /&gt; - In dbisql, choose Tools - Options... - Plan.&lt;br /&gt;&lt;br /&gt; - Check "Graphical plan with full statistics".&lt;br /&gt;&lt;br /&gt; - Check "Assume read-only cursor" if that applies.&lt;br /&gt;&lt;br /&gt; - Pick "Assume cursor is: Asensitive" if that applies.&lt;br /&gt;&lt;br /&gt; - Click "OK".&lt;br /&gt;&lt;br /&gt; - Run CALL sa_flush_cache() if desired.&lt;br /&gt;&lt;br /&gt; - Run your query (see Tip below).&lt;br /&gt;&lt;br /&gt; - Do File - Save As - Save as type: XML (*.xml).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;How To Capture A Graphical Plan In Version 9&lt;/h3&gt;&lt;br /&gt; - In dbisql, choose Tools - Options... - Plan.&lt;br /&gt;&lt;br /&gt; - Check "Graphical plan with statistics".&lt;br /&gt;&lt;br /&gt; - Check "Assume read-only cursor" if that applies.&lt;br /&gt;&lt;br /&gt; - Pick "Assume cursor is: Asensitive" if that applies.&lt;br /&gt;&lt;br /&gt; - Click "Make Permanent".&lt;br /&gt;&lt;br /&gt; - Run CALL sa_flush_cache() if desired.&lt;br /&gt;&lt;br /&gt; - Run your query (see Tip below).&lt;br /&gt;&lt;br /&gt; - Do File - Save As - Save as type: XML (*.xml).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;How To Capture A Graphical Plan In Version 8&lt;/h3&gt;&lt;br /&gt; - In dbisql, choose Tools - Options... - Plan.&lt;br /&gt;&lt;br /&gt; - Check "Graphical plan with statistics".&lt;br /&gt;&lt;br /&gt; - Check "Assume read-only cursor" if that applies.&lt;br /&gt;&lt;br /&gt; - Pick "Assume cursor is: Asensitive" if that applies.&lt;br /&gt;&lt;br /&gt; - Uncheck "Show UltraLite plan" unless you want that.&lt;br /&gt;&lt;br /&gt; - Click "Make Permanent".&lt;br /&gt;&lt;br /&gt; - Run CALL sa_flush_cache() if desired.&lt;br /&gt;&lt;br /&gt; - Run your query (see Tip below).&lt;br /&gt;&lt;br /&gt; - Do File - Save As - Save as type: XML (*.xml).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tip for Version 10 and earlier:&lt;/b&gt; If you do use dbisql to execute a query and capture a graphical plan with statistics, use SQL - Get Plan (Shift+F5) instead of SQL - Execute (F5 or F9). If you use Execute, the query will be executed twice: once to determine the result set and a second time to capture the plan. This plan may be completely different from the one used the first time the query was executed, and not just because the cache contains the rows. For example, if the plan is for a DELETE, the first execution will actually delete the rows so the plan may be for the completely different "zero rows" case. If you use Get Plan (Shift+F5) the query will only be run once, and the plan will match.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-7446438452173893882?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/7446438452173893882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/how-to-capture-graphical-plan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7446438452173893882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/7446438452173893882'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/how-to-capture-graphical-plan.html' title='How To Capture A Graphical Plan'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-4976128173878542366</id><published>2009-10-20T16:40:00.005-04:00</published><updated>2009-10-20T16:43:21.956-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><title type='text'>SQL Anywhere 12!</title><content type='html'>&lt;p&gt;&lt;h3&gt;&lt;a href="http://marketing.ianywhere.com/forms/sqlanywhereinnsbruckbeta?title=Medallion&amp;content_id_display=1065985&amp;navId=78571&amp;click=bannerad" target="_blank"&gt;Woohoo!&amp;nbsp;&amp;nbsp; &lt;u&gt;Sign up for the beta now!&lt;/u&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-4976128173878542366?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/4976128173878542366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/sql-anywhere-12.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/4976128173878542366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/4976128173878542366'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/sql-anywhere-12.html' title='SQL Anywhere 12!'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-6913465806770274954</id><published>2009-10-19T05:00:00.001-04:00</published><updated>2009-10-19T05:00:00.916-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='housekeeping'/><title type='text'>"Search this blog, plus 5 others..."</title><content type='html'>&lt;p&gt;The &lt;a href="http://www.google.com/coop/manage/cse/" target="_blank"&gt;Google Custom Search Engine&lt;/a&gt; gadgets on this page have changed:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/Stn5z8kfqFI/AAAAAAAAA0M/xR9bZkBYIb0/s1600/Search%2Bthis%2Bblog,%2Bplus%2B5%2Bothers.jpg" width="365" height="172" title="Search this blog, plus 5 others"&gt;&lt;br /&gt;&lt;br /&gt;First of all, the original Search gadget has been changed from "Search this blog, plus Glenn Paulley's" to "Search this blog, plus 5 others": &lt;a href="http://iablog.sybase.com/paulley" target="_blank"&gt;Glenn's&lt;/a&gt; plus the other four active SQL Anywhere blogs on iablog.sybase.com: &lt;a href="http://iablog.sybase.com/hinsperg" target="_blank"&gt;Jason Hinsperger&lt;/a&gt;, &lt;a href="http://iablog.sybase.com/kleisath" target="_blank"&gt;Chris Kleisath&lt;/a&gt;, &lt;a href="http://iablog.sybase.com/efarrar" target="_blank"&gt;Eric Farrar&lt;/a&gt; and &lt;a href="http://iablog.sybase.com/tslee" target="_blank"&gt;Tom Slee&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Second, a new gadget "Search this blog" has been added. This one is an "ego search", just for me, so I can search my old posts.&lt;br /&gt;&lt;br /&gt;Third, the additional gadget uses the new Google "Custom Search Element" which displays the result set in an overlay on the same page instead of jumping to a separate search page:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/_H2KjtJnsvcU/Stn6NXYBOUI/AAAAAAAAA0U/INeZ-wWxHxU/s1600/Search%2Bthis%2Bblog%2Bresults%2Boverlay.jpg" width="368" height="648" title="Search this blog results overlay"&gt;&lt;br /&gt;&lt;br /&gt;Yeah, that's confusing: "Custom Search Element" sounds so much like "Custom Search Engine"... perhaps Google is taking steps to preserve the earth's rapidly diminishing supply of acronyms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-6913465806770274954?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/6913465806770274954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/search-this-blog-plus-5-others.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6913465806770274954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6913465806770274954'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/search-this-blog-plus-5-others.html' title='&quot;Search this blog, plus 5 others...&quot;'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_H2KjtJnsvcU/Stn5z8kfqFI/AAAAAAAAA0M/xR9bZkBYIb0/s72-c/Search%2Bthis%2Bblog,%2Bplus%2B5%2Bothers.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-8861977881359925994</id><published>2009-10-16T05:00:00.003-04:00</published><updated>2009-10-16T05:00:02.017-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance and tuning'/><title type='text'>Product Futures: Grow In-Memory Cache Faster</title><content type='html'>&lt;p&gt;Maybe I've been living a sheltered life, but until recently I've never seen SQL Anywhere have a Cache Panic. Not once, not in production, not in testing, not even while testing &lt;a href="http://www.risingroad.com/foxhound/foxhound1_help/foxhound_monitor.html" target="_blank"&gt;Foxhound&lt;/a&gt; which is supposed to display the number of Cache Panics on the monitor page.&lt;br /&gt;&lt;br /&gt;What is a Cache Panic? It happens when SQL Anywhere needs to allocate a page in the cache but can't find one. Sounds bad, but what with &lt;a href="http://dcx.sybase.com/index.php#http%3A//dcx.sybase.com/1101en/dbusage_en11/nt-95-98-dynamic.html" target="_blank"&gt;dynamic cache sizing&lt;/a&gt; and the temporary file, I'd never seen one.&lt;br /&gt;&lt;br /&gt;At one point, I considered removing Cache Panics from the Foxhound monitor page to save valuable screen real estate (if you've seen the Foxhound monitor page, you know what "crowded" means when it comes to displays :) However, &lt;a href="http://iablog.sybase.com/paulley/" target="_blank"&gt;a wise voice&lt;/a&gt; counseled me to leave it alone, saying that it's an important statistic.&lt;br /&gt;&lt;br /&gt;Not important enough, however, for me to include a Cache Panics threshold in the &lt;a href="http://sqlanywhere.blogspot.com/2009/07/comparing-database-monitors.html" target="_blank"&gt;Foxhound email alerts&lt;/a&gt; feature... that was a bad decision, about to be fixed... because I've just seen my first Cache Panics, and believe me, they &lt;b&gt;are&lt;/b&gt; bad:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_H2KjtJnsvcU/Stc52YeZBII/AAAAAAAAA0E/W8j109Z_M2Y/s1600/Cache%2BPanics.jpg" width="585" height="188" title="Cache Panics"&gt;&lt;br /&gt;&lt;br /&gt;What the Foxhound figures above don't show is how badly performance can be affected when Cache Panics are happening. When you start a SQL Anywhere database using the in-memory feature (dbsrv11 -im nw in this case), there is no temporary file, and it doesn't write anything to the database file, so SQL Anywhere has no place other than RAM to put a  page of data. If the RAM cache is full, SQL Anywhere has to allocate more RAM.&lt;br /&gt;&lt;br /&gt;It gets worse: If you don't specify the -c initial RAM cache size value when you start the server, and if you perform some intense operation like LOAD TABLE a million rows, SQL Anywhere will have to allocate RAM at a furious pace... all the while Cache Panicking when it can't find a page to allocate.&lt;br /&gt;&lt;br /&gt;Who cares? If performance is important, &lt;b&gt;you&lt;/b&gt; care. In this case adding -c 1200M to the dbsrv11 command line improved LOAD TABLE performance by 165%, from 2,878 rows per second to 7,640 rows per second.&lt;br /&gt;&lt;h3&gt;Grow In-Memory Cache Faster&lt;/h3&gt;Here's what the server console log looked like when it had to grow the cache a zillion times, up to 10 times per second:&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;&lt;/b&gt;&lt;pre class="brush: text"&gt;&lt;br /&gt;I. 10/14 15:29:15. Now accepting requests&lt;br /&gt;I. 10/14 15:29:18. Cache size adjusted to 2340K&lt;br /&gt;I. 10/14 15:29:23. Cache size adjusted to 3180K&lt;br /&gt;I. 10/14 15:29:28. Cache size adjusted to 3392K&lt;br /&gt;I. 10/14 15:29:33. Cache size adjusted to 3488K&lt;br /&gt;I. 10/14 15:30:14. DIAG 2009-10-14 15:30:14.421 load table started&lt;br /&gt;I. 10/14 15:30:14. Cache size adjusted to 3748K&lt;br /&gt;I. 10/14 15:30:14. Cache size adjusted to 4012K&lt;br /&gt;I. 10/14 15:30:14. Cache size adjusted to 4276K&lt;br /&gt;...&lt;br /&gt;I. 10/14 15:41:23. Cache size adjusted to 1151416K&lt;br /&gt;I. 10/14 15:41:23. Cache size adjusted to 1151676K&lt;br /&gt;I. 10/14 15:41:23. Cache size adjusted to 1151936K&lt;br /&gt;I. 10/14 15:41:23. Cache size adjusted to 1151724K&lt;br /&gt;I. 10/14 15:41:23. Cache size adjusted to 1152144K&lt;br /&gt;I. 10/14 15:41:23. Cache size adjusted to 1152404K&lt;br /&gt;I. 10/14 15:41:24. Cache size adjusted to 1152668K&lt;br /&gt;I. 10/14 15:41:24. DIAG 2009-10-14 15:41:24.343 load table finished in 669.0 seconds&lt;br /&gt;I. 10/14 15:42:23. Cache size adjusted to 1152388K&lt;br /&gt;I. 10/14 15:42:27. Cache size adjusted to 1152800K&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Most of the time, growing the cache step-by-step works just fine... but not when the database is growing rapidly and it's all stored in memory.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Suggestion...&lt;/h3&gt;So here's the Product Futures suggestion: When a SQL Anywhere database is running in-memory, and a lot of Cache Panics are happening, and it's having to grow the cache ten times a second,  then the &lt;a href="http://dcx.sybase.com/index.php#http%3A//dcx.sybase.com/1101en/dbusage_en11/nt-95-98-dynamic.html" target="_blank"&gt;dynamic cache sizing&lt;/a&gt; algorithm should pick some increment other than 64 pages when allocating more RAM.&lt;br /&gt;&lt;br /&gt;That way, we won't have to fiddle around trying to pick &lt;b&gt;exactly&lt;/b&gt; the right -c initial cache size.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;...Or, Maybe Not&lt;/h3&gt;It's a little known fact (well, I didn't know it) that picking a reasonable value for -c is a good idea regardless of the cache growth performance issue described here. &lt;br /&gt;&lt;br /&gt;For example, if you expect the cache to grow to some size between 1G and 2G, you should specify a value like -c 1G instead of letting it default to the tiny value (on Windows) of 2M. The server uses hash chains to find data in the cache, and the number of hash chains is determined by the initial cache size. A cache that starts at 2M will have fewer hash chains and those chains will grow very long (and slow) as the cache grows to 2G; performance will suffer, even if the Cache Panics problem is solved. And that performance problem will persist even after the cache finishes growing.&lt;br /&gt;&lt;br /&gt;On the other hand, a cache that starts at -c 1G and grows to 2G will have more, shorter chains, and better performance. In other words, you don't have to pick an &lt;b&gt;exact&lt;/b&gt; value for -c, but you should avoid letting it default to a &lt;b&gt;stup...&lt;/b&gt;, er, &lt;b&gt;wildly inappropriate&lt;/b&gt; value (like 2M) if you &lt;b&gt;know&lt;/b&gt; it's going to grow to at least 1G.&lt;br /&gt;&lt;br /&gt;And, of course, the Cache Panics problem won't be nearly so noticeable if you pick a half-decent value for -c. Plus, it goes away after the cache finishes growing.&lt;br /&gt;&lt;br /&gt;So, maybe it's not worth fixing, just worth knowing about :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-8861977881359925994?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/8861977881359925994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/product-futures-grow-in-memory-cache.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/8861977881359925994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/8861977881359925994'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/product-futures-grow-in-memory-cache.html' title='Product Futures: Grow In-Memory Cache Faster'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_H2KjtJnsvcU/Stc52YeZBII/AAAAAAAAA0E/W8j109Z_M2Y/s72-c/Cache%2BPanics.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-6533399086663157644</id><published>2009-10-14T05:00:00.001-04:00</published><updated>2009-10-14T05:00:02.580-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL code'/><title type='text'>SQL Anywhere Product Futures Discussion</title><content type='html'>&lt;p&gt;Sybase forum users will recognize "SQL Anywhere Product Futures Discussion" as the title for the sybase.public.sqlanywhere.product_futures_discussion newsgroup on the forums.sybase.com NNTP server. It's available from your web browser, but I won't put a link here because every one of the several HTTP / HTML interfaces to the NNTP forums are, well, inadequate.&lt;br /&gt;&lt;br /&gt;Besides, the NNTP forums are reaching the end of their usefulness, which is why I'm not going to post suggestions there any more... I'm going to post them here, starting now...&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;DB_PROPERTY ( 'BackupInProgress' )&lt;/h3&gt;There should be a database property which answers the question, "Is a database backup process in progress?" It would apply to the BACKUP statement and the dbbackup.exe utility. &lt;br /&gt;&lt;br /&gt;The question arises, should the answer be as simple as yes/no, or more complex? The continuous live backup process comes to mind, where the answer would always be yes... maybe live backups should be excluded.&lt;br /&gt;&lt;br /&gt;And what about database versus log-only backups? Should the response be db/log/both/no?&lt;br /&gt;&lt;br /&gt;That's what "discussion" is for; if you have an opinion, post a comment here. &lt;br /&gt;&lt;br /&gt;One reason for having this property is so database monitor programs, like &lt;a href="http://www.risingroad.com/foxhound/index.html" target="_blank"&gt;Foxhound&lt;/a&gt; and the &lt;a href="http://dcx.sybase.com/index.php#http%3A%2F%2Fdcx.sybase.com%2F1101en%2Fdbadmin_en11%2Fintro-sam.html" target="_blank"&gt;SQL Anywhere Monitor&lt;/a&gt;, could adjust their behavior when a backup is running; e.g., they could recognize that server I/O processing will change in behavior, and that checkpoints will be suspended.&lt;br /&gt;&lt;br /&gt;Another reason might be so you can write code that starts a backup as long as one isn't running already, perhaps a second redundant process that makes sure a backup is taken even if some other backup process failed.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;DB_PROPERTY ( 'BackupSuccessfulAt' )&lt;/h3&gt;This database property should answer the question, "When was the last backup taken?" It should return NULL if there never has been a successful backup, or the timestamp when the most recent successful backup finished.&lt;br /&gt;&lt;br /&gt;In my opinion, this request doesn't need any justification... it's hard to think of any question more important than one involving database backups. And today, there is just no reliable way to answer the question, certainly not easily.&lt;br /&gt;&lt;br /&gt;I'm guessing live backups don't count here, if only because then never finish unless there's a problem; e.g., the server crashes, so dbbackup loses connectivity... and a database property is useless if the server ain't running.&lt;br /&gt;&lt;br /&gt;Should there be different properties for different backup types? e.g., 'DBBackupSuccessfulAt', 'LogBackupSuccessfulAt', 'FullBackupSuccessfulAt'... more discussion!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-6533399086663157644?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/6533399086663157644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/sql-anywhere-product-futures-discussion.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6533399086663157644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/6533399086663157644'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/sql-anywhere-product-futures-discussion.html' title='SQL Anywhere Product Futures Discussion'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-701345064559708474</id><published>2009-10-12T05:00:00.001-04:00</published><updated>2009-10-12T05:00:00.629-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL code'/><title type='text'>Global Exception Handler</title><content type='html'>&lt;p&gt;Stephan.ahlf posted an excellent suggestion in &lt;a href="http://groups.google.com/group/sql-anywhere-web-development/browse_frm/thread/84a92db6d0029b56?hl=en" target="_blank"&gt;this thread&lt;/a&gt; in the Google &lt;a href="http://groups.google.com/group/sql-anywhere-web-development?hl=en" target="_blank"&gt;SQL Anywhere Web Development&lt;/a&gt; group:&lt;BLOCKQUOTE&gt;"It would be a nice feature if developers could implement a Global Exception Handler. In case of errors in procedures invoked via a database event there is only a error message in the database console. With a Global Exception Handler I could develop a general error notification e.g via email. There is an event for after RAISEERROR. Does there exists somthing like that for native database exceptions?" &lt;/BLOCKQUOTE&gt;Eric Farrar thinks it's a good idea too, which is wonderful news; Eric is highly respected throughout the SQL Anywhere community and his word should carry some significant weight:&lt;BLOCKQUOTE&gt;"Unfortunately, there is nothing inside of SQL Anywhere to allow you to specify a top-level exception handler that will be called on any native database exception. I do understand why this would be useful (especially in a web context), and I have passed this idea on to the appropriate engineers."  &lt;br /&gt;&lt;/BLOCKQUOTE&gt;Exception handling plays a huge role in the web-based &lt;a href="http://www.risingroad.com/foxhound/index.html" target="_blank"&gt;Foxhound&lt;/a&gt; database monitor, and I would &lt;b&gt;love&lt;/b&gt; to be able to code an all-encompassing global exception handler to record errors for later diagnosis.&lt;br /&gt;&lt;br /&gt;One problem facing a global exception handler, however, is providing an answer to the question "Where, in all the thousands of lines of SQL code, did this exception occur?"&lt;br /&gt;&lt;br /&gt;That's a hard question to answer even for a local exception handler. One solution (used by Foxhound) is to maintain a "where am I?" variable as the code executes just so an exception handler can include it with the other information it saves and/or displays. &lt;br /&gt;&lt;br /&gt;For a global exception handler, one could use a global CREATE VARIABLE to store the "where am I?" value, but I would rather not... I would rather have SQL Anywhere provide the source code line number and object name (procedure, event, service, etc).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-701345064559708474?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/701345064559708474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/global-exception-handler.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/701345064559708474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/701345064559708474'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/global-exception-handler.html' title='Global Exception Handler'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-252865632170829582</id><published>2009-10-11T08:22:00.001-04:00</published><updated>2009-10-11T08:22:48.308-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database Deadpool'/><title type='text'>We Don't Need No Steenking Backup!</title><content type='html'>&lt;p&gt;Let's all welcome Microsoft and T-Mobile's Sidekick service as the latest &lt;a href="http://sqlanywhere.blogspot.com/2009/02/web-20-meets-database-101.html" target="_blank"&gt;Database Deadpool&lt;/a&gt; winners! &lt;br /&gt;&lt;br /&gt;Here's the reported time line for the T-Mobile disaster:&lt;br /&gt;&lt;h3&gt;Friday, October 2, 2009&lt;/h3&gt;Microsoft, whose Danger subsidiary powers the [T-Mobile] Sidekick service, said it is "working urgently" to deal with the problems, which interrupted data service for most Sidekick users starting at 1:30 a.m. PDT on Friday.&lt;blockquote&gt;&lt;a href="http://news.cnet.com/8301-13860_3-10368709-56.html" target="_blank"&gt;Major outage hits T-Mobile Sidekick users&lt;/a&gt; October 6, 2009 11:57 AM PDT by Ina Fried&lt;/blockquote&gt; We are working to resolve the issue and hope to have things restored to normal soon. &lt;blockquote&gt;&lt;a href="http://www.hiptop.com/forums/showthread.php?t=114562" target="_blank"&gt;Sidekick Service Issue (Oct 2nd)&lt;/a&gt; 10-02-2009, 08:40 PM&lt;/blockquote&gt; &lt;h3&gt;Sunday, October 4, 2009&lt;/h3&gt;...it seems that Danger's data center has been on the fritz for a solid two days now with symptoms ranging from text message weirdness to dead address books and everything in between, up to and including a completely unusable experience. Frantic calls to T-Mobile are resulting in comped bills for some subscribers, so if you're affected, you might want to give 'em a ring.&lt;blockquote&gt;&lt;a href="http://www.engadgetmobile.com/2009/10/04/dangers-server-woes-leave-sidekicks-in-the-lurch/" target="_blank"&gt;Danger's server woes leave Sidekicks in the lurch&lt;/a&gt; by Chris Ziegler posted Oct 4th 2009 at 4:48PM&lt;/blockquote&gt;&lt;h3&gt;Monday, October 5, 2009&lt;/h3&gt;Users of T-Mobile's Sidekick smartphones spent much of the weekend without data service, and many are still waiting for service to be restored.&lt;blockquote&gt;&lt;a href="http://smartphones.about.com/b/2009/10/05/t-mobile-danger-working-to-resolve-sidekick-data-outage.htm" target="_blank"&gt;T-Mobile: Danger Working to Resolve Sidekick Data Outage&lt;/a&gt; Monday October 5, 2009&lt;/blockquote&gt;&lt;h3&gt;Thursday October 8, 2009&lt;/h3&gt;We sincerely apologize for the inconvenience, and appreciate your patience as Danger works hard, around-the-clock to resolve this issue. T-Mobile will continue to keep you updated as we learn more. Thank you!&lt;blockquote&gt;&lt;a href="http://www.hiptop.com/forums/showthread.php?t=114562" target="_blank"&gt;Sidekick Service Issue&lt;/a&gt; 10-08-2009, 04:22 PM&lt;/blockquote&gt; &lt;h3&gt;Saturday, October 10, 2009&lt;/h3&gt;The massive data failure at Microsoft's Danger subsidiary threatens to put a dark cloud over the company's broader "software plus services" strategy. &lt;blockquote&gt;&lt;a href="http://news.cnet.com/8301-13860_3-10372525-56.html" target="_blank"&gt;Sidekick outage casts cloud over Microsoft&lt;/a&gt; October 10, 2009 3:26 PM PDT by Ina Fried&lt;/blockquote&gt;...this is shaping up to be one of the biggest disasters in the history of cloud computing.&lt;blockquote&gt;&lt;a href="http://www.engadget.com/2009/10/10/t-mobile-we-probably-lost-all-your-sidekick-data/" target="_blank"&gt;T-Mobile: we probably lost all your Sidekick data&lt;/a&gt; by Chris Ziegler posted Oct 10th 2009 at 3:45PM&lt;/blockquote&gt;Perez Hilton loses 2000 contacts in his Sidekick. 2000 people to meet in Griffith Park for biggest group hug ever.&lt;blockquote&gt;&lt;a href="http://twitter.com/johncmayer/status/4770725888" target="_blank"&gt;John Mayer&lt;/a&gt;&lt;/blockquote&gt; Regrettably, based on Microsoft/Danger's latest recovery assessment of their systems, we must now inform you that personal information stored on your device - such as contacts, calendar entries, to-do lists or photos - that is no longer on your Sidekick almost certainly has been lost as a result of a server failure at Microsoft/Danger.&lt;blockquote&gt;&lt;a href="http://forums.t-mobile.com/tmbl/?category.id=Sidekick" target="_blank"&gt;T-MOBILE AND MICROSOFT/DANGER STATUS UPDATE ON SIDEKICK DATA DISRUPTION&lt;/a&gt;Updated: 10/10/2009 12:35 PM PDT&lt;/blockquote&gt; This is a code red cloud disaster.&lt;blockquote&gt;&lt;a href="http://www.informationweek.com/blog/main/archives/2009/10/cloud_goes_boom.html;jsessionid=QYABM2IIQXNMNQE1GHOSKHWATMY32JVN" target="_blank"&gt;Cloud Goes Boom, T-Mo Sidekick Users Lose All Data&lt;/a&gt; Posted by Eric Zeman, Oct 10, 2009 08:22 PM&lt;/blockquote&gt; This latest large-scale publicized data loss will surely lead to managers everywhere forwarding a link to the story to their IT departments asking "what are we doing so that this doesn't happen to us." ...&lt;br /&gt;If you read almost any technology website or newspaper, you could be forgiven for thinking that "The Cloud" solves everything.&lt;br /&gt;...&lt;br /&gt;In the Danger case, it appears from initial speculation that the data was lost because they attempted to upgrade a storage array without backing it up first. Here is a case of smart and rational people who do this for a living at one of the best companies in the world, and they didn't even bother making a backup..&lt;blockquote&gt;&lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/10/11/AR2009101100109.html" target="_blank"&gt;Letting Data Die A Natural Death&lt;/a&gt; Nik Cubrilovic TechCrunch.com Saturday, October 10, 2009; 8:20 PM&lt;/blockquote&gt; &lt;h3&gt;Sunday, October 11, 2009&lt;/h3&gt;Microsoft/Danger has stated that they cannot recover the data but are still trying.&lt;blockquote&gt;&lt;a href="http://hardware.slashdot.org/story/09/10/11/0335210/Server-Failure-Destroys-Sidekick-Users-Backup-Data" target="_blank"&gt;Server Failure Destroys Sidekick Users' Backup Data&lt;/a&gt; Posted by timothy  on Sunday October 11, @05:29AM&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-252865632170829582?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/252865632170829582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/we-dont-need-no-steenking-backup.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/252865632170829582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/252865632170829582'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/we-dont-need-no-steenking-backup.html' title='We Don&apos;t Need No Steenking Backup!'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-4366458739545280737</id><published>2009-10-07T17:27:00.000-04:00</published><updated>2009-10-07T17:28:16.256-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL code'/><title type='text'>How To Make Sure Your DatabaseStart Event Finishes First</title><content type='html'>&lt;p&gt;If you have scheduled events in your database, and those events contain logic that depends on the DatabaseStart event finishing beforehand, it's up to you to make sure your scheduled events don't start running too early.&lt;br /&gt;&lt;br /&gt;For example, let's say you have critical initialization logic in your DatabaseStart event, and your scheduled events contain other logic that assumes the initialization process is complete before they run. Since every event runs on its own connection, and connections run asynchronously, there's no guarantee that the DatabaseStart event will finish before your scheduled events start firing.&lt;br /&gt;&lt;br /&gt;One strategy is to add more logic to each scheduled event to check if the DatabaseStart event has finished running, and to immediately RETURN if DatabaseStart has not finished. &lt;br /&gt;&lt;br /&gt;Here's one way to implement that strategy:&lt;ul&gt;&lt;li&gt;Add code to the end of the DatabaseStart event to record the CURRENT TIMESTAMP in a single-row table.&lt;br /&gt;&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;Add code to the beginning of each scheduled event to check if the SQL Anywhere server startup timestamp is later than the timestamp recorded by the DatabaseStart event.&lt;br /&gt;&lt;p style="clear: both;"&gt;&lt;/li&gt;&lt;li&gt;If the server startup timestamp is later than the DatabaseStart timestamp, then RETURN from the scheduled event.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If the server startup timestamp is later than the DatabaseStart timestamp, then the DatabaseStart timestamp must have been recorded by a previous execution of the DatabaseStart event during a previous server startup... which in turn implies the DatabaseStart event for the current server startup hasn't finished executing.&lt;br /&gt;&lt;br /&gt;Eventually, the DatabaseStart event will finish, and the next time the scheduled event fires it won't execute the RETURN.&lt;br /&gt;&lt;br /&gt;Here are some excerpts from the &lt;a href="http://www.risingroad.com/foxhound/index.html" target="_blank"&gt;Foxhound&lt;/a&gt; database monitor; first, a single-row table contains the DatabaseStart timestamp:&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;&lt;/b&gt;&lt;pre class="brush: text"&gt;&lt;br /&gt;CREATE TABLE rroad_database_start_blocker (&lt;br /&gt;   one_row_only  INTEGER NOT NULL DEFAULT 1 &lt;br /&gt;                    CHECK ( one_row_only = 1 )  &lt;br /&gt;                       PRIMARY KEY,&lt;br /&gt;   started_at    TIMESTAMP NOT NULL ); &lt;br /&gt;&lt;br /&gt;CREATE TRIGGER trd_one_row_only BEFORE DELETE ON rroad_database_start_blocker&lt;br /&gt;FOR EACH ROW&lt;br /&gt;BEGIN&lt;br /&gt;   ROLLBACK TRIGGER WITH RAISERROR 99999 'Do not attempt to delete from rroad_database_start_blocker';&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;INSERT rroad_database_start_blocker VALUES ( DEFAULT, CURRENT TIMESTAMP );&lt;br /&gt;COMMIT;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Second, the DatabaseStart event updates DatabaseStart timestamp after all the initialization logic is complete:&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;&lt;/b&gt;&lt;pre class="brush: text"&gt;&lt;br /&gt;CREATE EVENT rroad_database_start TYPE DatabaseStart HANDLER&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;... critical initialization code ...&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;-- Block other events from proceeding until this event finishes.&lt;br /&gt;&lt;br /&gt;UPDATE rroad_database_start_blocker&lt;br /&gt;   SET rroad_database_start_blocker.started_at = CURRENT TIMESTAMP&lt;br /&gt; WHERE rroad_database_start_blocker.one_row_only = 1;&lt;br /&gt;&lt;br /&gt;COMMIT;&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finally, a scheduled event starts by checking the server startup timestamp against the DatabaseStart timestamp:&lt;br /&gt;&lt;!-- ++++++++++++++++++++++++++++++ --&gt;&lt;b&gt;&lt;/b&gt;&lt;pre class="brush: text"&gt;&lt;br /&gt;CREATE EVENT rroad_monitor_auto_restart&lt;br /&gt;SCHEDULE START TIME '00:00' EVERY 10 SECONDS&lt;br /&gt;DISABLE&lt;br /&gt;HANDLER BEGIN&lt;br /&gt;&lt;br /&gt;-- Wait for the rroad_database_start event to finish before proceeding.&lt;br /&gt;&lt;br /&gt;IF COALESCE ( PROPERTY ( 'StartTime' ), '' ) = '' THEN&lt;br /&gt;&lt;br /&gt;   -- The SQL Anywhere engine hasn't yet filled in the StartTime property, so it can't be&lt;br /&gt;   -- compared with rroad_database_start_blocker.started_at, so it's not safe to proceed&lt;br /&gt;   -- with this event yet.&lt;br /&gt;&lt;br /&gt;   RETURN; -- try again when this event fires again&lt;br /&gt;&lt;br /&gt;END IF;&lt;br /&gt;&lt;br /&gt;IF CAST ( PROPERTY ( 'StartTime' ) AS TIMESTAMP )&lt;br /&gt; &gt; ( SELECT rroad_database_start_blocker.started_at &lt;br /&gt;       FROM rroad_database_start_blocker  &lt;br /&gt;      WHERE rroad_database_start_blocker.one_row_only = 1 ) THEN&lt;br /&gt;&lt;br /&gt;   -- The DatabaseStart event hasn't yet updated rroad_database_start_blocker.started_at so&lt;br /&gt;   -- this event cannot proceed.&lt;br /&gt;&lt;br /&gt;   RETURN; -- try again when this event fires again&lt;br /&gt;&lt;br /&gt;END IF;&lt;br /&gt;&lt;br /&gt;... other logic that depends on the initialization process being complete ...&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note that PROPERTY ( 'StartTime' ) might not even be filled in by the time a scheduled event starts executing so there are two reasons to RETURN early.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-4366458739545280737?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/4366458739545280737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/how-to-make-sure-your-databasestart.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/4366458739545280737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/4366458739545280737'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/10/how-to-make-sure-your-databasestart.html' title='How To Make Sure Your DatabaseStart Event Finishes First'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-497787815177352569.post-2800740885996536034</id><published>2009-09-25T05:00:00.000-04:00</published><updated>2009-09-25T05:00:01.992-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testimonial'/><title type='text'>Quassnoi's Explain Extended</title><content type='html'>&lt;p&gt;I've added a new blog to the "WIDER VIEWS..." list on the right: &lt;a href="http://explainextended.com" target="_blank"&gt;Quassnoi's Explain Extended&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lot's of solid SQL content there, in particular this excellent discussion about "thinking in sets": &lt;a href="http://explainextended.com/2009/07/12/double-thinking-in-sql/" target="_blank"&gt;Double-thinking in SQL&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/497787815177352569-2800740885996536034?l=sqlanywhere.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlanywhere.blogspot.com/feeds/2800740885996536034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlanywhere.blogspot.com/2009/09/quassnois-explain-extended.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/2800740885996536034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/497787815177352569/posts/default/2800740885996536034'/><link rel='alternate' type='text/html' href='http://sqlanywhere.blogspot.com/2009/09/quassnois-explain-extended.html' title='Quassnoi&apos;s Explain Extended'/><author><name>Breck Carter</name><uri>http://www.blogger.com/profile/15975598564711761434</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08237468130796709304'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>