<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Microsoft Drivers for PHP for SQL Server Team Blog</title><link>http://blogs.msdn.com/b/sqlphp/</link><description>All about the Microsoft Drivers for PHP for SQL Server, SQL Server and PHP (SQLSRV and PDO_SQLSRV)</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Preview Refresh of the Microsoft Driver for Node.js for SQL Server</title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/10/13/preview-refresh-of-the-microsoft-driver-for-node-js-for-sql-server.aspx</link><pubDate>Fri, 12 Oct 2012 19:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10359223</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/10/13/preview-refresh-of-the-microsoft-driver-for-node-js-for-sql-server.aspx#comments</comments><description>&lt;p&gt;Hi everyone,&lt;/p&gt;
&lt;p&gt;We've been overwhelmed with the level of interest from the community since our &lt;a title="first preview release" href="http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx"&gt;first preview release&lt;/a&gt; of the Microsoft Driver for Node.js for SQL Server. We've had a total of 82 &lt;a title="issues" href="https://github.com/windowsazure/node-sqlserver/issues"&gt;issues&lt;/a&gt; created, with 24 bugs closed, and 18 questions asked by our users. We've also marked our very &lt;a title="first" href="https://github.com/WindowsAzure/node-sqlserver/pull/20"&gt;first&lt;/a&gt; community contribution, which we are always grateful for. Now that a few months have passed since our first preview, we are now releasing a refresh of the driver, along with a few changes.&lt;/p&gt;
&lt;h2&gt;&amp;nbsp;Name change to msnodesql&lt;/h2&gt;
&lt;p&gt;The very first thing you'll notice is that we've changed the name of the driver to 'msnodesql'. We wanted to make sure that the name was short and meaningful, and to this end, we've updated our name to reflect this. You will find that 'node-sqlserver' has been marked as &lt;a title="deprecated" href="https://github.com/WindowsAzure/node-sqlserver/pull/20"&gt;deprecated&lt;/a&gt; on NPM, and we've published a new package name. We will be using this package going forward.&lt;/p&gt;
&lt;h2&gt;Github branch changes&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;Our community has been very eager to pick up the latest changes as we make them, and having a separate 'develop' branch has brought some difficulties. To address this, we've converged all of our development efforts into our 'master' branch. For the users out there familiar with SVN nomenclature, we'll be treating our 'master' branch as our 'trunk'. All development work which reaches an acceptable level of stability will be checked in to 'master'. If you like bleeding-edge bits, this is the branch you'll want to focus on.&lt;/p&gt;
&lt;p&gt;We've also created a servicing branch named 'v0.2'. If you prefer stable, tested bits, you should track this branch. This is where we'll be making any changes to the existing stable release if they are required. Please keep in mind that this branch will see very little activity as we focus on our next version. You should only follow this branch if you require stability for your applications. Additionally, please keep in mind that as this driver is a preview release, we do not recommend using it inside a production environment. There will still be bugs in the servicing branch, and we will only address these if they are critical enough. Most of our changes will land in the 'master' branch as we progress towards our v1.0 release.&lt;/p&gt;
&lt;p&gt;Finally, given our focus on a 'trunk' and 'service' branch, we've stopped all development work in our 'develop' branch, and have removed it from the repository. If you were previously tracking our progress in this branch, you should switch to 'master'.&lt;/p&gt;
&lt;h2&gt;Getting the&amp;nbsp;Preview Refresh&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;You can find the latest bits on our &lt;a title="Github repository" href="https://github.com/WindowsAzure/node-sqlserver/"&gt;Github repository&lt;/a&gt;, at our existing address. You can also download a pre-compiled binary on our download &lt;a title="page  " href="http://www.microsoft.com/en-us/download/details.aspx?id=29995"&gt;page&lt;/a&gt; at the Microsoft Download Center. We provide limited support while in preview on our Github &lt;a title="Issues  " href="https://github.com/WindowsAzure/node-sqlserver/issues"&gt;Issues&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;As always, we welcome contributions of any kind, be they Pull Requests, or Feature Enhancements. You can find out how to get involved with our &lt;a title="Contribution Guidelines" href="https://github.com/WindowsAzure/node-sqlserver/blob/master/CONTRIBUTING.md"&gt;Contribution Guidelines&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt;Program Manager&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10359223" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/node-js/">node.js</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/msnodesql/">msnodesql</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/node_2D00_sqlserver/">node-sqlserver</category></item><item><title>Announcing Web Matrix 2</title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/09/08/announcing-web-matrix-2.aspx</link><pubDate>Fri, 07 Sep 2012 22:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10347449</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/09/08/announcing-web-matrix-2.aspx#comments</comments><description>&lt;p&gt;Today we are excited to announce the official release of WebMatrix 2! This version includes tons of new features and improvements. In this overview, we will show you how WebMatrix makes it easier to build websites with PHP and publish them.&lt;/p&gt;
&lt;p&gt;Here is the &lt;a href="http://bit.ly/Ue2fvE"&gt;download page&lt;/a&gt;&amp;nbsp;if you want to skip the intro and dive right in.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Getting Started&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Getting started with PHP in WebMatrix is simple and straightforward. There are 3 main options: you can open an existing site, create a new site from the built-in templates, or build your site based on the common open source applications such as WordPress, Joomla!, and Drupal.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3056.pic1.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3056.pic1.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By default, WebMatrix offers two built-in templates: Empty Site for those who want to start coding from scratch with just PHP and a blank&amp;nbsp;template, and Starter Site which is a fully functional sample site with login and page management built on top of PHP and MySQL.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/5810.pic2.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/5810.pic2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Alternatively, you can choose from dozens of open source applications in WebMatrix App Gallery.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/2766.pic3.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/2766.pic3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The first time you create your site, WebMatrix will automatically detect any missing dependencies and install them for you. This is especially useful when you build sites which require the time-consuming task of setting up PHP and My SQL on your local box.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Generic and App-specific Code completion&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;When you are developing your site, WebMatrix offers PHP code completion to make the task easier. As you type, the editor suggests functions or keywords appropriate for the immediate context. The entire PHP function library is at your fingertips when you code!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3515.pic4.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3515.pic4.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When you're browsing other people's code (or even your own code from a while back), you might not recognize some of the functions or constructs that you see. Now, without leaving WebMatrix, you can quickly get information on an element by holding the mouse pointer over it.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7651.pic5.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7651.pic5.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you like to work with web applications like &lt;a href="http://www.microsoft.com/web/wordpress"&gt;WordPress&lt;/a&gt;, &lt;a href="http://www.microsoft.com/web/joomla"&gt;Joomla!&lt;/a&gt;&amp;nbsp;or &lt;a href="http://www.microsoft.com/web/drupal"&gt;Drupal&lt;/a&gt;, you'll love the application-specific code completion.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/4011.pic6.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/4011.pic6.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Testing Your Sites Locally&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Before publishing the changes you&amp;rsquo;ve made to your websites, it&amp;rsquo;s a good idea to test them locally. To do this, simply hit &amp;lsquo;Run&amp;rsquo; and your site will be launched in the default browser on your local machine. You can also select a non-default desktop browser or mobile simulators to launch your site in.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/8154.pic7.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/8154.pic7.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Publishing Your Sites&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Finally, when you are ready to publish your PHP website to Windows Azure or any hosting provider that supports FTP or Web Deploy, select Publish and enter the settings obtained from the hosting provider. If your provider enables you to download the publishing settings in a single profile, you can simply import it into WebMatrix.&lt;/p&gt;
&lt;p&gt;The screenshots below show you how to publish to Windows Azure in simple steps.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Download publishing profile&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login to the &lt;a href="https://manage.windowsazure.com"&gt;Management Portal&lt;/a&gt;. If you don&amp;rsquo;t already have a&lt;br /&gt;Windows Azure account, you can sign up for a&amp;nbsp;no-obligation &lt;a href="http://www.windowsazure.com/en-us/pricing/free-trial/"&gt;free&amp;nbsp; trial&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;+ New&lt;/strong&gt; icon on the bottom left of the portal.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7571.pic8.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7571.pic8.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;WEB SITE&lt;/strong&gt;, then &lt;strong&gt;CREATE WITH DATABASE&lt;/strong&gt;.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7506.pic9.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7506.pic9.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Enter a value for &lt;strong&gt;URL&lt;/strong&gt;, select &lt;strong&gt;Create a New MySQL Database &lt;/strong&gt;from the &lt;strong&gt;DATABASE&lt;/strong&gt; dropdown, and select the data center for your website in the &lt;strong&gt;REGION&lt;/strong&gt; dropdown. Click the arrow at the bottom of the dialog.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/1541.pic10.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/1541.pic10.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enter a value for the &lt;strong&gt;NAME&lt;/strong&gt; of your database, select the data center for your database in the &lt;strong&gt;REGION&lt;/strong&gt; dropdown, and check the box that indicates you agree with the legal terms. Click the&lt;br /&gt;checkmark at the bottom of the dialog.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3113.pic11.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3113.pic11.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When the website has been created you will see the text &lt;strong&gt;Creation of Web Site &amp;lsquo;[SITENAME]&amp;rsquo; completed successfully&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Import publishing profile&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Once your site has been created in Windows Azure, go to the site&amp;rsquo;s dashboard and select &amp;ldquo;Download publish profile&amp;rdquo;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/6087.pic12.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/6087.pic12.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Save the downloaded published profile in your local machine&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3704.pic13.jpg"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Return to your site in WebMatrix and click the Publish button at the top left corner.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3704.pic13.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/3704.pic13.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Select &amp;ldquo;Import Publish Profile&amp;rdquo;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/1256.pic14.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/1256.pic14.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/0027.pic15.jpg"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Alternatively, you can also choose &amp;ldquo;Enter settings&amp;rdquo; to type in the information manually.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Publish&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click &lt;b&gt;Save &lt;/b&gt;and then&lt;b&gt; Continue&lt;/b&gt; to run the compatibility check in order to make sure the remote server has the required dependencies to host your site. You can skip this check, but it is not recommended.&lt;/li&gt;
&lt;li&gt;Review the compatibility results. If any of the items display a warning icon and say &amp;ldquo;Not Available&amp;rdquo;, you can click the hyperlink to learn more.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/4532.pic15.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/4532.pic15.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The publish preview shows you what files have changed and are being published. If you are using the Web Deploy protocol, you will also have the option to publish the database along with content. Click &lt;b&gt;Continue &lt;/b&gt;to begin publishing.&lt;/li&gt;
&lt;li&gt;Publishing progress will show in the notification bar. When it&amp;rsquo;s done, you will see a link to browse to the remote site.&lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7450.pic16.jpg"&gt;&lt;img alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-92-42/7450.pic16.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&amp;rsquo;ve only skimmed through a few features which help you create, test, and publish your websites more easily with WebMatrix. You can learn more by visiting &lt;a href="http://bit.ly/Ue2fvE"&gt;WebMatrix website&lt;/a&gt; and start building your sites today!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thao Doan&amp;nbsp;&lt;br /&gt;Program Manager&lt;br /&gt;Azure Applications Platform Team&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10347449" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/PHP/">PHP</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/azure/">azure</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/webmatrix/">webmatrix</category></item><item><title>Announcing Windows Azure Mobile Services </title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/08/29/announcing-windows-azure-mobile-services.aspx</link><pubDate>Tue, 28 Aug 2012 20:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10344352</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/08/29/announcing-windows-azure-mobile-services.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;We are very excited to re-post the recent &lt;a title="http://weblogs.asp.net/scottgu/archive/2012/08/28/announcing-windows-azure-mobile-services.aspx" href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/announcement"&gt;announcement &lt;/a&gt;for &lt;a title="https://www.windowsazure.com/en-us/develop/mobile/" href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/Windows Azure Mobile Services"&gt;Windows Azure Mobile Services&lt;/a&gt;! Read up on this at Scott's &lt;a title="http://weblogs.asp.net/scottgu/default.aspx" href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/blog"&gt;blog&lt;/a&gt;:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m excited to announce a new capability we are adding to Windows Azure &lt;br /&gt;today: &lt;a href="http://www.windowsazure.com/mobile" target="_blank"&gt;Windows Azure Mobile Services&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows Azure Mobile Services makes it incredibly easy to connect a scalable &lt;br /&gt;cloud backend to your client and mobile applications.&amp;nbsp; It allows you to easily &lt;br /&gt;store structured data in the cloud that can span both devices and users, &lt;br /&gt;integrate it with user authentication, as well as send out updates to clients &lt;br /&gt;via push notifications.&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s release enables you to add these capabilities to any Windows 8 app in &lt;br /&gt;literally minutes, and provides a super productive way for you to quickly build &lt;br /&gt;out your app ideas.&amp;nbsp; We&amp;rsquo;ll also be adding support to enable these same scenarios &lt;br /&gt;for Windows Phone, iOS, and Android devices soon.&lt;/p&gt;
&lt;p&gt;Read this &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started/" target="_blank"&gt;getting started tutorial&lt;/a&gt; to walkthrough how you can build (in &lt;br /&gt;less than 5 minutes) a simple Windows 8 &amp;ldquo;Todo List&amp;rdquo; app that is cloud enabled &lt;br /&gt;using Windows Azure Mobile Services.&amp;nbsp; Or watch &lt;a href="https://www.youtube.com/watch?v=ovDtALgsBuQ" target="_blank"&gt;this video&lt;/a&gt; &lt;br /&gt;of me showing how to do it step by step.&lt;/p&gt;
&lt;h2&gt;&lt;span style="text-decoration: underline;"&gt;Getting Started&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;If you don&amp;rsquo;t already have a Windows Azure account, you can sign up for a &lt;br /&gt;no-obligation &lt;a href="http://www.windowsazure.com/en-us/pricing/free-trial/" target="_blank"&gt;Free Trial&lt;/a&gt;.&amp;nbsp; Once you are signed-up, click the &amp;ldquo;preview &lt;br /&gt;features&amp;rdquo; section under the &amp;ldquo;account&amp;rdquo; tab of the &lt;a href="http://www.windowsazure.com" target="_blank"&gt;www.windowsazure.com&lt;/a&gt; &lt;br /&gt;website and enable your account to support the &amp;ldquo;Mobile Services&amp;rdquo; preview.&amp;nbsp;&amp;nbsp; &lt;br /&gt;Instructions on how to enable this can be found &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/create-a-windows-azure-account/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you have the mobile services preview enabled, log into the Windows Azure &lt;br /&gt;Portal, click the &amp;ldquo;New&amp;rdquo; button and choose the new &amp;ldquo;Mobile Services&amp;rdquo; icon to &lt;br /&gt;create your first mobile backend.&amp;nbsp; Once created, you&amp;rsquo;ll see a quick-start page &lt;br /&gt;like below with instructions on how to connect your mobile service to an &lt;br /&gt;existing Windows 8 client app you have already started working on, or how to &lt;br /&gt;create and connect a brand-new Windows 8 client app with it:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_0AC8D76C.png"&gt;&lt;img width="482" height="352" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_00302B6C.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Read this &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started/" target="_blank"&gt;getting started tutorial&lt;/a&gt; to walkthrough how you can build (in &lt;br /&gt;less than 5 minutes) a simple Windows 8 &amp;ldquo;Todo List&amp;rdquo; app&amp;nbsp; that stores data in &lt;br /&gt;Windows Azure.&lt;/p&gt;
&lt;h2&gt;&lt;span style="text-decoration: underline;"&gt;Storing Data in the Cloud&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Storing data in the cloud with Windows Azure Mobile Services is incredibly &lt;br /&gt;easy.&amp;nbsp; When you create a Windows Azure Mobile Service, we automatically &lt;br /&gt;associate it with a SQL Database inside Windows Azure.&amp;nbsp; The Windows Azure Mobile &lt;br /&gt;Service backend then provides built-in support for enabling remote apps to &lt;br /&gt;securely store and retrieve data from it (using secure REST end-points utilizing &lt;br /&gt;a JSON-based ODATA format) &amp;ndash; without you having to write or deploy any custom &lt;br /&gt;server code.&amp;nbsp; Built-in management support is provided within the Windows Azure &lt;br /&gt;portal for creating new tables, browsing data, setting indexes, and controlling &lt;br /&gt;access permissions.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/mobile-services-diagram_6759067B.png"&gt;&lt;img width="594" height="281" title="mobile-services-diagram" style="border-width: 0px; margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="mobile-services-diagram" src="http://weblogs.asp.net/blogs/scottgu/mobile-services-diagram_thumb_6A266D81.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This makes it incredibly easy to connect client applications to the cloud, &lt;br /&gt;and enables client developers who don&amp;rsquo;t have a server-code background to be &lt;br /&gt;productive from the very beginning.&amp;nbsp; They can instead focus on building the &lt;br /&gt;client app experience, and leverage Windows Azure Mobile Services to provide the &lt;br /&gt;cloud backend services they require.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Below is an example of&lt;em&gt; &lt;span style="text-decoration: underline;"&gt;client-side&lt;/span&gt;&lt;/em&gt; Windows 8 C#/XAML code &lt;br /&gt;that could be used to query data from a Windows Azure Mobile Service.&amp;nbsp; &lt;br /&gt;Client-side C# developers can write queries like this using LINQ and strongly &lt;br /&gt;typed POCO objects, which are then translated into HTTP REST queries that run &lt;br /&gt;against a Windows Azure Mobile Service.&amp;nbsp;&amp;nbsp; Developers don&amp;rsquo;t have to write or &lt;br /&gt;deploy any custom server-side code in order to enable client-side code below to &lt;br /&gt;execute and asynchronously populate their client UI:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_36832285.png"&gt;&lt;img width="476" height="185" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_5F218E8C.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Because Mobile Services is part of Windows Azure, developers can later choose &lt;br /&gt;to augment or extend their initial solution and add custom server functionality &lt;br /&gt;and more advanced logic if they want.&amp;nbsp; This provides maximum flexibility, and &lt;br /&gt;enables developers to grow and extend their solutions to meet any needs.&lt;/p&gt;
&lt;h2&gt;&lt;span style="text-decoration: underline;"&gt;User Authentication and Push Notifications&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Windows Azure Mobile Services also make it incredibly easy to integrate user &lt;br /&gt;authentication/authorization and push notifications within your applications.&amp;nbsp; &lt;br /&gt;You can use these capabilities to enable authentication and fine grain access &lt;br /&gt;control permissions to the data you store in the cloud, as well as to trigger &lt;br /&gt;push notifications to users/devices when the data changes.&amp;nbsp; Windows Azure Mobile &lt;br /&gt;Services supports the concept of &amp;ldquo;server scripts&amp;rdquo; (small chunks of server-side &lt;br /&gt;script that executes in response to actions) that make it really easy to enable &lt;br /&gt;these scenarios.&lt;/p&gt;
&lt;p&gt;Below are some tutorials that walkthrough common &lt;br /&gt;authentication/authorization/push scenarios you can do with Windows Azure Mobile &lt;br /&gt;Services and Windows 8 apps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-dotnet/" target="_blank"&gt;Enabling User Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.windowsazure.com/en-us/develop/mobile/tutorials/authorize-users-in-scripts-dotnet/" target="_blank"&gt;Authorizing Users&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-push-dotnet/" target="_blank"&gt;Get Started with Push Notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.windowsazure.com/en-us/develop/mobile/tutorials/push-notifications-to-users-dotnet/" target="_blank"&gt;Push Notifications to multiple Users&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span style="text-decoration: underline;"&gt;Manage and Monitor your Mobile Service&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Just like with every other service in Windows Azure, you can monitor usage &lt;br /&gt;and metrics of your mobile service backend using the &amp;ldquo;Dashboard&amp;rdquo; tab within the &lt;br /&gt;Windows Azure Portal.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_2127FDCE.png"&gt;&lt;img width="515" height="337" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_7AEAC5D7.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The dashboard tab provides a built-in monitoring view of the API calls, &lt;br /&gt;Bandwidth, and server CPU cycles of your Windows Azure Mobile Service.&amp;nbsp;&amp;nbsp; You can &lt;br /&gt;also use the &amp;ldquo;Logs&amp;rdquo; tab within the portal to review error messages.&amp;nbsp; This makes &lt;br /&gt;it easy to monitor and track how your application is doing.&lt;/p&gt;
&lt;h2&gt;&lt;span style="text-decoration: underline;"&gt;Scale Up as Your Business Grows&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Windows Azure Mobile Services now allows every Windows Azure customer to &lt;br /&gt;create and run up to 10 Mobile Services in a free, shared/multi-tenant hosting &lt;br /&gt;environment (where your mobile backend will be one of multiple apps running on a &lt;br /&gt;shared set of server resources).&amp;nbsp; This provides an easy way to get started on &lt;br /&gt;projects at no cost beyond the database you connect your Windows Azure Mobile &lt;br /&gt;Service to (note: each Windows Azure free trial account also includes a 1GB SQL &lt;br /&gt;Database that you can use with any number of apps or Windows Azure Mobile &lt;br /&gt;Services).&lt;/p&gt;
&lt;p&gt;If your client application becomes popular, you can click the &amp;ldquo;Scale&amp;rdquo; tab of &lt;br /&gt;your Mobile Service and switch from &amp;ldquo;Shared&amp;rdquo; to &amp;ldquo;Reserved&amp;rdquo; mode.&amp;nbsp; Doing so &lt;br /&gt;allows you to isolate your apps so that you are the only customer within a &lt;br /&gt;virtual machine.&amp;nbsp; This allows you to elastically scale the amount of resources &lt;br /&gt;your apps use &amp;ndash; allowing you to scale-up (or scale-down) your capacity as your &lt;br /&gt;traffic grows:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/scottgu/image_6A970031.png"&gt;&lt;img width="730" height="484" title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="image" src="http://weblogs.asp.net/blogs/scottgu/image_thumb_401173E6.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With Windows Azure you pay for compute capacity on a per-hour basis &amp;ndash; which &lt;br /&gt;allows you to scale up and down your resources to match only what you need.&amp;nbsp; &lt;br /&gt;This enables a super flexible model that is ideal for new mobile app scenarios, &lt;br /&gt;as well as startups who are just getting going.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&lt;span style="text-decoration: underline;"&gt;Summary&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve only scratched the surface of what you can do with Windows Azure Mobile &lt;br /&gt;Services &amp;ndash; there are a lot more features to explore.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;With Windows Azure Mobile Services you&amp;rsquo;ll be able to build mobile app &lt;br /&gt;experiences faster than ever, and enable even better user experiences &amp;ndash; by &lt;br /&gt;connecting your client apps to the cloud.&lt;/p&gt;
&lt;p&gt;Visit the &lt;a href="https://www.windowsazure.com/en-us/develop/mobile/" target="_blank"&gt;Windows Azure Mobile Services development center&lt;/a&gt; to learn &lt;br /&gt;more, and build your first Windows 8 app connected with Windows Azure today.&amp;nbsp; &lt;br /&gt;And read this &lt;a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started/" target="_blank"&gt;getting started tutorial&lt;/a&gt; to walkthrough how you can build (in &lt;br /&gt;less than 5 minutes) a simple Windows 8 &amp;ldquo;Todo List&amp;rdquo; app that is cloud enabled &lt;br /&gt;using Windows Azure Mobile Services.&lt;/p&gt;
&lt;p&gt;Hope this helps,&lt;/p&gt;
&lt;p&gt;Scott&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10344352" width="1" height="1"&gt;</description></item><item><title>Introducing the Microsoft Driver for Node.JS for SQL Server</title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx</link><pubDate>Thu, 07 Jun 2012 20:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10316951</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Dear Node.JS Community,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;We are excited to announce a preview release of the Microsoft Driver for Node.JS for SQL Server.&amp;nbsp; This new driver enables access to SQL Server and Windows Azure SQL Database from any Node.JS applications.&amp;nbsp; Over the last few months our team has been working diligently toward developing this driver and preparing for a preview release so we can gather your feedback early in our development cycle. Today, we are announcing that our Microsoft Driver for Node.JS for SQL Server is ready for public preview.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: Cambria;" face="Cambria"&gt;Open First&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;The Microsoft Driver for Node.JS for SQL Server is hosted on &lt;/span&gt;&lt;a href="https://github.com/WindowsAzure/node-sqlserver"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;Github&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;, accentuating our continued involvement with the Open Source community. We will integrate features into the repository as we complete them, and you&amp;rsquo;ll be able to see all check-ins, issues and future roadmap discussions as we work to further improve this driver. Of course, we are also accepting contributions from the community, in accordance with our &lt;/span&gt;&lt;a href="http://windowsazure.github.com/guidelines.html"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;contributor guidelines&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;Given this is a preview release, we look forward to and encourage all feedback from the community. Please feel free to look at existing &lt;/span&gt;&lt;a href="https://github.com/WindowsAzure/node-sqlserver/issues"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;issues&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;, file new ones, or contact me on &lt;/span&gt;&lt;a href="https://twitter.com/kop48"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;Twitter&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; with feedback. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: Cambria;" face="Cambria"&gt;Simplicity by Design&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;In designing the API for this new driver, we aimed to keep a simple surface which is intuitive to Node.JS developers. Here&amp;rsquo;s an example of connecting to SQL Server from Node.JS:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;// Query with explicit connection&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var sql = require('node-sqlserver');&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var conn_str = "Driver={SQL Server Native Client 11.0};Server=(local);Database=AdventureWorks2012;Trusted_Connection={Yes}";&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;sql.open(conn_str, function (err, conn) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (err) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("Error opening the connection!");&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; conn.queryRaw("SELECT TOP 10 FirstName, LastName FROM Person.Person", function (err, results) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (err) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("Error running query!");&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; results.rows.length; i++) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("FirstName: " + results.rows[i][0] + " LastName: " + results.rows[i][1]);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;});&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;There are two modes for retrieving query results. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;The first mode returns all rows at once as a parameter to a callback:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new,courier;"&gt;// Simple Query with parameters&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var sql = require('node-sqlserver');&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var conn_str = "Driver={SQL Server Native Client 11.0};Server=(local);Database=AdventureWorks2012;Trusted_Connection={Yes}";&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;var match = "%crombie%";&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;sql.query(conn_str, "SELECT FirstName, LastName FROM Person.Person WHERE LastName LIKE ?", [match], function (err, results) {&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; results.length; i++) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("FirstName: " + results[i].FirstName + " LastName: " + results[i].LastName);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;});&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;Additionally, a statement object returned by a query can subscribe to events in order to receive individual rows and columns:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new,courier;"&gt;// Query with streaming&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var sql = require('node-sqlserver');&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var conn_str = "Driver={SQL Server Native Client 11.0};Server=(local);Database=AdventureWorks2012;Trusted_Connection={Yes}";&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;var stmt = sql.query(conn_str, "SELECT FirstName, LastName FROM Person.Person ORDER BY LastName OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY");&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;stmt.on('meta', function (meta) { console.log("We've received the metadata"); });&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;stmt.on('row', function (idx) { console.log("We've started receiving a row"); });&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;stmt.on('column', function (idx, data, more) { console.log(idx + ":" + data);});&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;stmt.on('done', function () { console.log("All done!"); });&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;stmt.on('error', function (err) { console.log("We had an error :-( " + err); });&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: Cambria;" face="Cambria"&gt;Use in Windows Azure Web Sites&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;As you&amp;rsquo;ve probably heard, the refreshed Windows Azure portal was also released as a preview today. You can use the Node.JS driver in Windows Azure Web Sites by following this simple&lt;/span&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/tutorials/create-a-website-(mac)/"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt; tutorial&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;, and prior to the publish phase, copying the node-sqlserver driver into your &lt;i&gt;node_modules &lt;/i&gt;directory. In the end, the sample application in the tutorial will look like so:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="Code"&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Courier New;" face="Courier New"&gt;./server.js&lt;br /&gt; ./node_modules/node-sqlserver/package.json&lt;br /&gt; ./node_modules/node-sqlserver/lib/sql.js&lt;br /&gt; ./node_modules/node-sqlserver/lib/sql.node&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;Additionally, here&amp;rsquo;s a small example which builds on the tutorial application to connect to Windows Azure SQL Database:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;var sql = require('node-sqlserver');&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var conn_str = "Driver={SQL Server Native Client 11.0};Server={tcp:servername.database.windows.net,1433};UID={username};PWD={Password1};Encrypt={Yes};Database={databasename}";&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: courier new,courier;"&gt;var http = require('http')&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;var port = process.env.port;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;http.createServer(function (req, res) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sql.query(conn_str, "SELECT * FROM TestTable", function (err, results) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (err) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.writeHead(500, { 'Content-Type': 'text/plain' });&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.write("Got error :-( " + err);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.end("");&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.writeHead(200, { 'Content-Type': 'text/plain' });&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; results.length; i++) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.write("ID: " + results[i].ID + " Column1: " + results[i].Column1 + " Column2: " + results[i].Column2);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res.end("; Done.");&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,courier;"&gt;}).listen(port);&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color: #365f91;" color="#365f91"&gt;&lt;span style="font-family: Cambria;" face="Cambria"&gt;Documentation, Feedback and Download&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;We are documenting this driver as we develop it on our Github &lt;/span&gt;&lt;a href="https://github.com/WindowsAzure/node-sqlserver/wiki"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;wiki&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;. We&amp;rsquo;ll also be continuously monitoring &lt;/span&gt;&lt;a href="https://github.com/WindowsAzure/node-sqlserver/issues"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;issues&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; on Github for your feedback and suggestions. We are releasing this as&amp;nbsp; a preview so we can incorporate feedback about our design before we have a fully-fledged release. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;To download the driver source, please visit our Github &lt;/span&gt;&lt;a href="https://github.com/WindowsAzure/node-sqlserver/"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;project page&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt; and clone or download the source onto your machine. You can then build the driver yourself using our freely-available &lt;/span&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;Visual C++ Express&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; compiler. Please take a look at the README included in the source tree for more information.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;If you do not want to compile the driver yourself, you can download it from our &lt;/span&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=29995"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;Download Center&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;. Once you download the package and have extracted it, please run &lt;/span&gt;&lt;i&gt;node-sqlserver-install.cmd&lt;/i&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt; to generate the required directories. You can then drop the &lt;/span&gt;&lt;i&gt;node-sqlserver&lt;/i&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt; directory into your &lt;/span&gt;&lt;i&gt;node-modules&lt;/i&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; directory and access SQL Server and Windows Azure SQL Database from your Node.JS application.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;Please note that the driver requires &lt;/span&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;the SQL Server Native Access Client&lt;/span&gt;&lt;a href="http://blogs.msdn.com/tiny_mce/plugins/paste/pasteword.htm#_msocom_1"&gt;&lt;span style="color: #0000ff; font-family: Calibri;" face="Calibri" color="#0000ff"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;/span&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt; &amp;ndash; you can get the latest version from the SQL Server 2012 Feature Pack download &lt;/span&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=29065"&gt;&lt;span style="color: #0000ff; font-family: Calibri; font-size: small;" face="Calibri" size="3" color="#0000ff"&gt;page&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;We&amp;rsquo;re pleased to show you our work to date and look forward to hearing from you!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Thank you,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Jonathan Guerin&lt;br /&gt; Program Manager&lt;br /&gt; SQL Server &amp;amp; Windows Azure SQL Database&lt;br /&gt; Microsoft Corporation&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Calibri; font-size: small;" face="Calibri" size="3"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10316951" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/node-js/">node.js</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/windows+azure+sql+database/">windows azure sql database</category></item><item><title>Microsoft Drivers 3.0.1 for PHP for SQL Server with PHP 5.4 Support Released</title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/03/23/microsoft-drivers-3-0-1-for-php-for-sql-server-with-php-5-4-support-release.aspx</link><pubDate>Thu, 22 Mar 2012 23:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10286648</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/03/23/microsoft-drivers-3-0-1-for-php-for-sql-server-with-php-5-4-support-release.aspx#comments</comments><description>&lt;p&gt;Dear SQL Server Developer Community,&lt;/p&gt;
&lt;p&gt;As you know, two weeks ago, we &lt;a href="http://blogs.msdn.com/b/sqlphp/archive/2012/03/07/microsoft-drivers-3-0-for-php-for-sql-server-released-to-web.aspx"&gt;released &lt;/a&gt;our 3.0 drivers along with &lt;a href="http://www.microsoft.com/sqlserver/en/us/default.aspx"&gt;SQL Server 2012&lt;/a&gt;. It was around the same time that PHP 5.4 was also &lt;a href="http://php.net/releases/5_4_0.php"&gt;released &lt;/a&gt;to the web, and we have received many requests from our community members to support the new PHP runtime. It is my pleasure to announce that we have listened to you, and have updated our drivers to 3.0.1. The major feature added for this release is support for PHP 5.4, as well as some minor bug fixes.&lt;/p&gt;
&lt;p&gt;As always, you can find documentation on the driver at our &lt;a href="http://msdn.microsoft.com/en-us/library/dd903047%28SQL.10%29.aspx"&gt;MSDN documentation page&lt;/a&gt;, provide feedback on our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqldriverforphp/threads"&gt;MSDN Forum&lt;/a&gt; and at the &lt;a href="https://connect.microsoft.com/SQLServer/Feedback"&gt;SQL Server Connect Site&lt;/a&gt;, and download the driver &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=20098"&gt;here&lt;/a&gt;. Also note that you will require the SQL Server 2012 Native Access Client, available as part of our SQL Server 2012 Feature Pack, viewable &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=29065"&gt;here&lt;/a&gt;. You can find the source code at our &lt;a href="http://sqlsrvphp.codeplex.com/"&gt;Codeplex Page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt; Program Manager &lt;br /&gt; SQL Connectivity&lt;br /&gt; Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10286648" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/PHP/">PHP</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/sqlsrv/">sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/pdo_5F00_sqlsrv/">pdo_sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/php_5F00_sqlsrv/">php_sqlsrv</category></item><item><title>Microsoft Drivers 3.0 for PHP for SQL Server Released to Web!</title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/03/07/microsoft-drivers-3-0-for-php-for-sql-server-released-to-web.aspx</link><pubDate>Tue, 06 Mar 2012 18:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10278580</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/03/07/microsoft-drivers-3-0-for-php-for-sql-server-released-to-web.aspx#comments</comments><description>&lt;p&gt;Dear SQL Server Developer Community,&lt;/p&gt;
&lt;p&gt;We wanted to extend a massive &amp;lsquo;thank you&amp;rsquo; to the community in providing feedback for our release of our &lt;a href="http://blogs.msdn.com/controlpanel/b/sqlphp/archive/2011/09/24/microsoft-drivers-3-0-for-php-for-sql-server-released.aspx"&gt;Customer Technology Preview&lt;/a&gt; back in September, and we&amp;rsquo;ve been working hard to incorporate the feedback you have provided us. You will find that we&amp;rsquo;ve fixed many issues you reported, and we are proud to be able to release the final build of our 3.0 drivers.&lt;/p&gt;
&lt;p&gt;The major highlights of this release include: support for &lt;a href="http://www.microsoft.com/sqlserver/en/us/default.aspx"&gt;SQL Server 2012&lt;/a&gt; features, and Buffered Queries. The 2012 features include support for &lt;a href="http://www.microsoft.com/sqlserver/en/us/future-editions/mission-critical/SQL-Server-2012-high-availability.aspx"&gt;AlwaysOn Connectivity&lt;/a&gt;, encompassing support for Multi-Subnet Failover, connectivity to AlwaysOn Availability Groups and Read-Only Routing, and support for &lt;a href="http://blogs.msdn.com/controlpanel/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx"&gt;SQL Express LocalDB&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;SQL Server 2012: LocalDB&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Microsoft Drivers for PHP for SQL Server include support for SQL Express LocalDB, a new distribution of SQL Server. LocalDB is a lightweight install, providing only the database engine. This engine is brought up automatically when an application connects to the instance, and provides easy connection-time parameters for attaching file-based databases. This feature significantly simplifies the development experience, as well as reducing the installation components necessary to develop for SQL Server. Enabling support for LocalDB is as easy as changing the connection string. An example in the SQLSRV driver:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;?php &lt;br /&gt; $serverName = "(localdb)\v11.0"; &lt;br /&gt; $connectionOptions = array( "Database"=&amp;gt;"AdventureWorks", &amp;ldquo;AttachDBFileName&amp;rdquo;=&amp;gt;&amp;rdquo;AdventureWorks.mdf&amp;rdquo; ); &lt;br /&gt; /* Connect to SQL Express LocalDB. */&lt;br /&gt; $conn = sqlsrv_connect( $serverName, $connectionOptions ); &lt;br /&gt; ?&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And an example in the PDO_SQLSRV driver:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;?php &lt;/code&gt;&lt;code&gt;&lt;br /&gt; &lt;/code&gt;&lt;code&gt;$conn = new PDO("sqlsrv:Server=(localdb)\v11.0 ; Database = AdventureWorks ; AttachDBFilename = AdventureWorks.mdf", "", ""); &lt;/code&gt;&lt;code&gt;&lt;br /&gt; &lt;/code&gt;&lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;All functionality expected from a standard SQL Server Express instance will also function with LocalDB, as well as all standard driver functions. Additionally, databases attached at connection time will automatically be attached in the engine if they are not already, or redirected to the existing attached file if the engine already has it attached.&lt;/p&gt;
&lt;h1&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;SQL Server 2012: AlwaysOn Connectivity&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;The Microsoft Drivers for PHP for SQL Server include support for the AlwaysOn Connectivity feature of SQL Server 2012:&lt;br /&gt; &lt;em&gt;SQL Server AlwaysOn is the new high availability and disaster recovery solution for the next release of SQL Server. Using AlwaysOn businesses can achieve increased application availability for their mission critical applications and get higher returns on their high availability investments through better utilization of hardware resources. AlwaysOn also increases productivity and lowers TCO by greatly simplifying high availability deployment and management.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The driver now supports the two new connection options &amp;ldquo;ApplicationIntent&amp;rdquo; and &amp;ldquo;MultiSubnetFailover&amp;rdquo; to support AlwaysOn connectivity.&lt;/p&gt;
&lt;h1&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Buffered Queries&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;Finally, the driver now provides support for resultsets to be buffered on the client-side by the driver. This feature is very common amongst PHP database drivers and we are proud to bring support for this in our 3.0 release. This is an opt-in feature which caches the entire resultset from a query into memory, therefore reducing subsequent round-trips to the server usually required to fetch the resultset row-by-row. An example where Buffered Queries is enabled in the SQLSRV driver is presented below:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;?php &lt;/code&gt;&lt;br /&gt; &lt;code&gt;/* Get products by querying against the product name.*/ &lt;/code&gt;&lt;br /&gt; &lt;code&gt;$tsql = "SELECT ProductID, Name, Color, Size, ListPrice FROM Production.Product";&lt;/code&gt;&lt;br /&gt; &lt;code&gt;/* Execute the query, buffered queries enabled */ &lt;/code&gt;&lt;br /&gt; &lt;code&gt;$getProducts = sqlsrv_query( $conn, $tsql, null, array("Scrollable"=&amp;gt;"buffered")););&lt;/code&gt;&lt;br /&gt; &lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And also in the PDO_SQLSRV driver:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;?php &lt;/code&gt;&lt;br /&gt; &lt;code&gt;/* Get products by querying against the product name.*/ &lt;/code&gt;&lt;br /&gt; &lt;code&gt;$tsql = "SELECT ProductID, Name, Color, Size, ListPrice FROM Production.Product"; &lt;/code&gt;&lt;br /&gt; &lt;code&gt;/* Prepare and execute the query, buffered queries enabled */ &lt;/code&gt;&lt;br /&gt; &lt;code&gt;$stmt = $conn-&amp;gt;prepare( $tsql, array(PDO::ATTR_CURSOR =&amp;gt; PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE =&amp;gt; PDO::SQLSRV_CURSOR_BUFFERED));&lt;/code&gt;&lt;br /&gt; &lt;code&gt;$stmt-&amp;gt;execute();&lt;/code&gt;&lt;br /&gt; &lt;code&gt;?&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Other features&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;We also added supported for the PDO Attribute PDO::ATTR_EMULATE_PREPARES, which can be of assistance when using parameters in a query that would not normally be supported by Transact-SQL.&lt;/p&gt;
&lt;p&gt;Finally, we incorporated many fixes reported by our community and hope that you find an improved experience with this new release. &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Documentation, Feedback and Download&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;You can find documentation on the driver at our &lt;a href="http://msdn.microsoft.com/en-us/library/dd903047%28SQL.10%29.aspx"&gt;MSDN documentation page&lt;/a&gt;, provide feedback on our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqldriverforphp/threads"&gt;MSDN Forum&lt;/a&gt; and at the &lt;a href="https://connect.microsoft.com/SQLServer/Feedback"&gt;SQL Server Connect Site&lt;/a&gt;, and (most importantly!) download the driver &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=20098"&gt;here&lt;/a&gt;. Also note that you will require the SQL Server 2012 Native Access Client, available as part of our SQL Server 2012 Feature Pack, viewable &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=29065"&gt;here&lt;/a&gt;. You can find the source code at our &lt;a href="http://sqlsrvphp.codeplex.com"&gt;Codeplex Page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d like to thank everyone on behalf of the team for supporting us in our endeavors to provide you with a high-quality driver. Happy downloading!&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt; Program Manager &lt;br /&gt; SQL Connectivity&lt;br /&gt; Microsoft Corporation&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10278580" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/PHP/">PHP</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/sqlsrv/">sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/pdo_5F00_sqlsrv/">pdo_sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/php_5F00_sqlsrv/">php_sqlsrv</category></item><item><title>SAG Awards Drupal Website Moves to Windows Azure</title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/02/25/sag-awards-drupal-website-moves-to-windows-azure.aspx</link><pubDate>Fri, 24 Feb 2012 22:34:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10272684</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/02/25/sag-awards-drupal-website-moves-to-windows-azure.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This has been re-posted from the Microsoft Interoperability &lt;a href="http://blogs.msdn.com/b/interoperability/archive/2012/02/24/sag-awards-website-moves-to-windows-azure.aspx"&gt;blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The success of the recent Screen Actors Guild (SAG) Awards ceremony was buoyed by the move of its Drupal-based website hosted on internal Linux servers to one hosted on &lt;a href="http://www.microsoft.com/Presspass/press/2012/feb12/02-24FilmIndustryPR.mspx"&gt;Windows Azure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.sagawards.org/"&gt;SAG Awards site&lt;/a&gt;&amp;nbsp;is a highly visible, high-traffic website running on Drupal. Hosting it on Azure provides a scalable, public cloud environment for SAG team. They can tune up or down the compute and storage requirements according to expected website loads, thereby getting a more scalable, manageable and cost-effective solution for running their site.&lt;/p&gt;
&lt;p&gt;SAG also gets the benefits of PaaS &amp;ndash; no need to manage the operating system patches, virtual machine images, network topology etc. This is particularly useful for SAG as the site has stable traffic for nine months, but which spikes for the three months from when award nominations open to the night of the event itself.&lt;/p&gt;
&lt;p&gt;The SAG Awards site was previously hosted on internal Linux boxes. In previous years, performance was negatively impacted by site outages and slow performance during peak-usage days, with SAG having to consistently upgrade their hardware to meet demand for those days. That upgraded hardware was then not optimally used during the rest of the year.&lt;/p&gt;
&lt;p&gt;The usage pattern for the SAG Awards site fluctuates, but spikes between November and February when the site is used for SAG award nominations in early November to the actual announcement of nominations in in mid-December. Peak usage is on the night of the awards ceremony where multiple uploads of pictures, news articles, and site visits happen.&lt;/p&gt;
&lt;p&gt;What is even more impressive is that both visits and page views almost doubled on the night of the event. In 2011, some 222,816 people visited the site and 434,743 pages were viewed, while this year there were some 325,303 site visits and 789,310 page views, reflecting the stability and performance of the site on Windows Azure.&lt;/p&gt;
&lt;p&gt;Microsoft started working with the SAG Awards team in May 2011, when their CIO Erin Griffin joined the &lt;a href="http://www.microsoft.com/interop/featured/IECCouncil.aspx"&gt;Interoperability Executive Council (IEC&lt;/a&gt;) - founded by Microsoft in 2006 with a goal of identifying the industry&amp;rsquo;s greatest areas of need and to work together to create solutions - and attended a council meeting.&lt;/p&gt;
&lt;p&gt;In September Mike Story, SAG&amp;rsquo;s chief architect, attended an IEC work stream meeting and asked for Microsoft&amp;rsquo;s support in porting the site to Azure. The Business Platform Division&amp;rsquo;s Customer Experience (CAT) team, the Interoperability group and Windows Azure all started working with SAG in early October and, on December 20, 2011, the site went live on Windows Azure.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;We moved to Windows Azure after looking at the services it offered,&amp;rdquo; said Erin Griffin, CIO at SAG. &amp;ldquo;Understanding the best usage scenario for us took time and effort, but with help from Microsoft, we successfully moved our site to Windows Azure and the biggest traffic day for us went off with flying colors.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This is just one real world outcome from the IEC, which has counseled Microsoft on many interoperability topics and introduced a number of real world scenarios for discussion. The IEC, working together with Microsoft, has developed a number of solutions for these scenarios, with this one for the SAG Awards being the latest.&lt;/p&gt;
&lt;p&gt;Curt Peterson, Microsoft&amp;rsquo;s Principal Group Program Manager, BPD Customer Experience, notes that the success of Sunday&amp;rsquo;s SAG Awards ceremony underscores how Windows Azure is a scalable, open Cloud platform ready for production use. &amp;ldquo;We are committed to making it easier for all our customers to use cloud computing on their terms with Windows Azure,&amp;rdquo; he says.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10272684" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/PHP/">PHP</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/drupal/">drupal</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/azure/">azure</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/interop/">interop</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/cloud/">cloud</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/open+source/">open source</category></item><item><title>Joomla! 2.5 Adds SQL Server Support!</title><link>http://blogs.msdn.com/b/sqlphp/archive/2012/01/28/joomla-2-5-adds-sql-server-support.aspx</link><pubDate>Sat, 28 Jan 2012 13:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10261448</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2012/01/28/joomla-2-5-adds-sql-server-support.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This entry has been re-posted from Brian Swan's &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2012/01/26/joomla-2-5-adds-sql-server-support.aspx"&gt;blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is a short post to shareexciting news: Jooma! 2.5, which shipped earlier this week, now has support for SQL Server! Of course, this release contains lots more goodies, but the addition of a database abstraction layer that supports multiple databases is a huge step (support for other databases may arrive quickly now that Joomla! ison a 6-month ship cycle). This will remove headaches for anyone deploying Joomla! in multiplatform environments. You can read all about the release on the Joomla! Web site: &lt;a href="http://www.joomla.org/announcements/release-news/5406-joomla-25-released.html"&gt;Joomla! 2.5 Released with Extra Features and Easy Updates&lt;/a&gt;. I think this quote from the announcement sums up the impact of this release better than I could:&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&amp;ldquo;&lt;i&gt;Multi-database support is a huge step forward for Joomla, which is already powering more than 1.6 million websites worldwide. It ensures companies and organization, both large and small, will save even more money and time by adopting Joomla&amp;hellip;No longer will Joomla developers be tied down to a particular database or have to spend more money and time integrating other software to get Joomla to communicate with their database. This enhances Joomla&amp;rsquo;s scalability immensely&lt;/i&gt;.&amp;rdquo; - Ryan Ozimek, President of Open Source Matters&lt;/p&gt;
&lt;p&gt;On behalf of the folks here at Microsoft, I want to give a huge thanks to the many volunteers in the Joomla! community who spent countless hours testing the changes that went into this release, as well as to the Joomla! core team for ultimately getting the changes in. I&amp;rsquo;d also like to give a huge thanks to the team at &lt;a href="http://hooduku.com/"&gt;Hooduku&lt;/a&gt;, who played a key role in adding the multi-database support and developed the Joomla! interface to SQL Server.&lt;/p&gt;
&lt;p&gt;The last bit of exciting news is that you can use the Microsoft Web Platform Installer to install Joomla! 2.5. Download the Web PI here (it's a quick download): &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;http://www.microsoft.com/web/downloads/platform.aspx.&lt;/a&gt; Once you&amp;rsquo;ve done that, launch the Web PI and search for &amp;ldquo;joomla&amp;rdquo; in the search box&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/4405.image_5F00_28C13680.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/4405.image_5F00_28C13680.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Click Add&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/7217.image_5F00_6F3E2688.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/7217.image_5F00_6F3E2688.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;then Install&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/0876.image_5F00_55D6234E.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/0876.image_5F00_55D6234E.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;choose your database&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/7624.image_5F00_2E2FA724.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/7624.image_5F00_2E2FA724.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;accept the terms (and note that the Web PI is also installing all the dependencies for Joomla!)&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/2450.image_5F00_14C7A3EA.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/2450.image_5F00_14C7A3EA.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;hellip;and in a few minutes, you&amp;rsquo;ll have Joomla! 2.5 installed!&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;p&gt;-Brian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10261448" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/Joomla_2100_/">Joomla!</category></item><item><title>Available Today: Preview Release of the SQL Server [C/C++] ODBC Driver for Linux</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/11/29/available-today-preview-release-of-the-sql-server-c-c-odbc-driver-for-linux.aspx</link><pubDate>Mon, 28 Nov 2011 19:48:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10242126</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/11/29/available-today-preview-release-of-the-sql-server-c-c-odbc-driver-for-linux.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This has been &lt;a href="http://blogs.technet.com/b/dataplatforminsider/archive/2011/11/28/available-today-preview-release-of-the-sql-server-odbc-driver-for-linux.aspx"&gt;re-posted &lt;/a&gt;from the &lt;a href="http://blogs.technet.com/b/dataplatforminsider/"&gt;SQL Server Team Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Segoe UI; font-size: small;" face="Segoe UI" size="2"&gt;In our continued commitment to interoperability, we are very excited to announce the availability of a preview release of the SQL Server ODBC Driver for Linux! This release will allow native developers to access Microsoft SQL Server from Linux operating systems. To assist our customers with native applications on multi-platform we have ported our existing, reliable and enterprise-class ODBC for Windows driver (a.k.a. SQL Server Native Client, or SNAC) to the Linux platform.&amp;nbsp; &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28160"&gt;&lt;strong&gt;Download the driver today here&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;!&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Segoe UI; font-size: small;" face="Segoe UI" size="2"&gt;In this release, the SQL Server ODBC Driver for Linux will be a 64-bit driver for Red Hat Enterprise Linux 5. We will support SQL Server 2008 R2 and SQL Server 2012 with this release of the driver. Notable driver features (in addition to what you would expect in an ODBC driver) include support for the Kerberos authentication protocol, SSL and client-side UTF-8 encoding. This release also brings proven and effective tools and the BCP and SQLCMD utilities to the Linux world. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Segoe UI; font-size: small;" face="Segoe UI" size="2"&gt;This SQL Server ODBC Driver for Linux provides a Microsoft-supported solution for C and C++ applications that target SQL Server. It also provides a mechanism for applications and runtimes that leverage ODBC to access SQL Server from Linux platforms. For customers who want to move from Sybase to SQL Server, the SQL Server ODBC Driver for Linux allows C and C++ code to continue running in Linux environments. For additional information on the first release of Microsoft ODBC Driver for Linux please refer to our &lt;a href="http://msdn.microsoft.com/en-us/library/hh568451%28SQL.110%29.aspx"&gt;ODBC Driver on Linux Documentation&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Segoe UI; font-size: small;" face="Segoe UI" size="2"&gt;This release marks a big milestone in Microsoft&amp;rsquo;s continued commitment to interoperability and our alignment with ODBC as the preferred way to access SQL Server. &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28160"&gt;Download the driver today&lt;/a&gt;; please provide your feedback and ask us questions via our &lt;a href="http://social.technet.microsoft.com/Forums/en/sqldataaccess/threads"&gt;forums&lt;/a&gt;; or post a comment via &lt;a href="https://connect.microsoft.com/SQLServer/Feedback"&gt;Microsoft Connect&lt;/a&gt;. We look forward to hearing from you. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Segoe UI; font-size: small;" face="Segoe UI" size="2"&gt;Thanks,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Segoe UI; font-size: small;" face="Segoe UI" size="2"&gt;Shekhar Joshi &lt;br /&gt;&lt;em&gt;Senior Program Manager &lt;br /&gt;Microsoft SQL Server ODBC Driver For Linux&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10242126" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/Linux/">Linux</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/ODBC/">ODBC</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/C_2B002B00_/">C++</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/C/">C</category></item><item><title>Using SQL Azure to Store PHP Session Data</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/10/20/using-sql-azure-to-store-php-session-data.aspx</link><pubDate>Wed, 19 Oct 2011 18:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10227697</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/10/20/using-sql-azure-to-store-php-session-data.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This entry is a re-post of &lt;a href="https://twitter.com/#!/brian_swan"&gt;Brian Swan&lt;/a&gt;'s &lt;a href="http://blogs.msdn.com/b/silverlining/archive/2011/10/19/using-sql-azure-to-store-php-session-data.aspx"&gt;entry &lt;/a&gt;on &lt;a href="http://blogs.msdn.com/b/silverlining/"&gt;The Silver Lining &lt;/a&gt;blog.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In my &lt;a href="http://blogs.msdn.com/b/silverlining/archive/2011/10/18/handling-php-sessions-in-windows-azure.aspx"&gt;last post&lt;/a&gt;, I looked at the session handling functionality that is built into the &lt;a href="http://phpazure.codeplex.com/"&gt;Windows Azure SDK for PHP&lt;/a&gt;, which uses &lt;a href="http://www.microsoft.com/windowsazure/features/storage/"&gt;Azure Tables or Azure Blobs&lt;/a&gt; for storing session data. As I wrote that post, I wondered how easy it would be to use &lt;a href="http://msdn.microsoft.com/en-us/library/ee336241.aspx"&gt;SQL Azure&lt;/a&gt; to store session data, especially since using a database to store session data is a common and familiar practice when building distributed PHP applications.&amp;nbsp; As I found out, using SQL Azure to store session data was relatively easy (as I&amp;rsquo;ll show in this post), but I did run into a couple of small hurdles that might be worth taking note of.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Because I&amp;rsquo;ll use the &lt;a href="http://sqlsrvphp.codeplex.com/"&gt;SQL Server Drivers for PHP&lt;/a&gt; to connect to SQL Azure, you can consider this post to also cover &amp;ldquo;Using &lt;em&gt;SQL Server&lt;/em&gt; to Store PHP Session Data&amp;rdquo;. The SQL Server Drivers for PHP connect to SQL Azure or SQL Server by simply changing the connection string.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The short story here is that I simply used the &lt;a href="http://us2.php.net/session_set_save_handler"&gt;session_set_save_handler&lt;/a&gt; function to map session functionality to custom functions. The biggest hurdle I ran into was that I had to heed this warning in the &lt;a href="http://us2.php.net/session_set_save_handler"&gt;session_set_save_handler&lt;/a&gt; documentation: &amp;ldquo;As of PHP 5.0.5 the &lt;i&gt;&lt;tt&gt;write&lt;/tt&gt;&lt;/i&gt; and &lt;i&gt;&lt;tt&gt;close&lt;/tt&gt;&lt;/i&gt; handlers are called after object destruction and therefore cannot use objects or throw exceptions. The object destructors can however use sessions. It is possible to call &lt;a href="http://us2.php.net/function.session-write-close.php"&gt;session_write_close()&lt;/a&gt; from the destructor to solve this chicken and egg problem.&amp;rdquo; I got around this by putting my session functions in a class and including a &lt;span style="font-family: Courier New;" face="Courier New"&gt;__destruct&lt;/span&gt; method that called&lt;span style="font-family: Courier New;" face="Courier New"&gt; session_write_close()&lt;/span&gt;. A smaller hurdle was that I needed to write a stored procedure that inserted a new row if the row didn&amp;rsquo;t already exist, but updated it if it did exist.&lt;/p&gt;
&lt;p&gt;The complete story follows. I&amp;rsquo;ll assume that you already have a Windows Azure subscription (if you don&amp;rsquo;t, you can get a free trial subscription here: &lt;a title="http://www.microsoft.com/windowsazure/free-trial/" href="http://www.microsoft.com/windowsazure/free-trial/"&gt;http://www.microsoft.com/windowsazure/free-trial/&lt;/a&gt;). Keep in mind that this code is &amp;ldquo;proof of concept&amp;rdquo; code &amp;ndash; it needs some refining to be ready for production.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; &lt;span style="text-decoration: underline;"&gt;Create the database, table, and stored procedure&lt;/span&gt; (the stored procedure described above). To keep my PHP code simple, it assumes that you have created a database called &lt;span style="font-family: Courier New;" face="Courier New"&gt;SessionsDB&lt;/span&gt; with a table called &lt;span style="font-family: Courier New;" face="Courier New"&gt;sessions&lt;/span&gt; and a stored procedure called &lt;span style="font-family: Courier New;" face="Courier New"&gt;UpdateOrInsertSession&lt;/span&gt;. (A TODO item is to add the creation of the table and stored procedure to the PHP code, but the creation of the database will have to be done separately.) To create these objects, execute the code below using the SQL Azure Portal or SQL Server Management Studio (details in this article &amp;ndash; &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/overview-of-tools-to-use-with-sql-azure.aspx"&gt;Overview of Tools to Use with SQL Azure&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Create table:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; sessions&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;(&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    id NVARCHAR(32) &lt;span style="color: #0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;NULL&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    start_time &lt;span style="color: #0000ff;"&gt;INT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;NULL&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;data&lt;/span&gt; NVARCHAR(4000) &lt;span style="color: #0000ff;"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;NULL&lt;/span&gt;,&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;CONSTRAINT&lt;/span&gt; [PK_sessions] &lt;span style="color: #0000ff;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;KEY&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;CLUSTERED&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    (&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        [id]&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    )&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Create stored procedure:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;PROCEDURE&lt;/span&gt; UpdateOrInsertSession&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;( &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    @id &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; NVARCHAR(32), &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    @start_time &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;INT&lt;/span&gt;, &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    @&lt;span style="color: #0000ff;"&gt;data&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt; NVARCHAR(4000)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;EXISTS&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; id &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; sessions &lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt; id = @id)    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;       &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #0000ff;"&gt;UPDATE&lt;/span&gt;  sessions        &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;data&lt;/span&gt; = @&lt;span style="color: #0000ff;"&gt;data&lt;/span&gt;        &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt; id = @id      &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;ELSE&lt;/span&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;BEGIN&lt;/span&gt;             &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            INSERT &lt;span style="color: #0000ff;"&gt;INTO&lt;/span&gt; sessions (id, start_time, &lt;span style="color: #0000ff;"&gt;data&lt;/span&gt;)       &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            &lt;span style="color: #0000ff;"&gt;VALUES&lt;/span&gt; ( @id, @start_time, @&lt;span style="color: #0000ff;"&gt;data&lt;/span&gt; )    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;END&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;END&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;One thing to note about the table: the data column will contain all the session data in a serialized form. This allows for more flexibility in the data you store.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;span style="text-decoration: underline;"&gt;Add the &lt;span style="font-family: Courier New;" face="Courier New"&gt;SqlAzureSessionHandler&lt;/span&gt; class to your project&lt;/span&gt;. The complete class is attached to this post, but I&amp;rsquo;ll call out a few things here&amp;hellip;&lt;/p&gt;
&lt;p&gt;The constructor takes your server ID, username, and password. Formatting the connection options is taken care of, but will need to be changed if you are using SQL Server. (i.e. The username will not require the &amp;ldquo;@serverId&amp;rdquo; suffix and your server name will not require the &amp;ldquo;tcp&amp;rdquo; prefix and &amp;ldquo;.database.windows.net&amp;rdquo; suffix.)&lt;/p&gt;
&lt;p&gt;Also note that &lt;span style="font-family: Courier New;" face="Courier New"&gt;session_set_save_handler&lt;/span&gt; is called in the constructor.&lt;/p&gt;
&lt;blockquote&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; __construct($serverId, $username, $password)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $connOptions = &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;(&lt;span style="color: #006080;"&gt;"UID"&lt;/span&gt;=&amp;gt;$username.&lt;span style="color: #006080;"&gt;"@"&lt;/span&gt;.$serverId, &lt;span style="color: #006080;"&gt;"PWD"&lt;/span&gt;=&amp;gt;$password, &lt;span style="color: #006080;"&gt;"Database"&lt;/span&gt;=&amp;gt;&lt;span style="color: #006080;"&gt;"SessionsDB"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $this-&amp;gt;_conn = sqlsrv_connect(&lt;span style="color: #006080;"&gt;"tcp:"&lt;/span&gt;.$serverId.&lt;span style="color: #006080;"&gt;".database.windows.net"&lt;/span&gt;, $connOptions);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(!$this-&amp;gt;_conn)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;die&lt;/span&gt;(print_r(sqlsrv_errors()));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    session_set_save_handler(&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                             &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($this, &lt;span style="color: #006080;"&gt;'open'&lt;/span&gt;),&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                             &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($this, &lt;span style="color: #006080;"&gt;'close'&lt;/span&gt;),&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                             &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($this, &lt;span style="color: #006080;"&gt;'read'&lt;/span&gt;),&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                             &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($this, &lt;span style="color: #006080;"&gt;'write'&lt;/span&gt;),&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                             &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($this, &lt;span style="color: #006080;"&gt;'destroy'&lt;/span&gt;),&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                             &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($this, &lt;span style="color: #006080;"&gt;'gc'&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;                             );&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;span style="font-family: Courier New;" face="Courier New"&gt;write&lt;/span&gt; method serializes and base64 encodes all the session data before writing it to SQL Azure. Note that the &lt;span style="font-family: Courier New;" face="Courier New"&gt;InsertOrUpdateSession&lt;/span&gt; stored procedure is used here so that new session data is inserted, but existing session data is updated:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; write($id, $data)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $serializedData = base64_encode(serialize($data));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $start_time = time();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $params = &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($id, $start_time, $serializedData);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $sql = &lt;span style="color: #006080;"&gt;"{call UpdateOrInsertSession(?,?,?)}"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $stmt = sqlsrv_query($this-&amp;gt;_conn, $sql, $params);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;($stmt === &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;die&lt;/span&gt;(print_r(sqlsrv_errors()));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; $stmt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;Of course, when session data is read, it must be base64 decoded and unserialized:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; read($id)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #008000;"&gt;// Read data&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $sql = &lt;span style="color: #006080;"&gt;"SELECT data&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            FROM sessions&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;            WHERE id = ?";&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $stmt = sqlsrv_query($this-&amp;gt;_conn, $sql, &lt;span style="color: #0000ff;"&gt;array&lt;/span&gt;($id));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;($stmt === &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;die&lt;/span&gt;(print_r(sqlsrv_errors()));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (sqlsrv_has_rows($stmt))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    {&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; unserialize(base64_decode($row[&lt;span style="color: #006080;"&gt;'data'&lt;/span&gt;]));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #006080;"&gt;''&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are no surprises in the &lt;span style="font-family: Courier New;" face="Courier New"&gt;close&lt;/span&gt;, &lt;span style="font-family: Courier New;" face="Courier New"&gt;destroy&lt;/span&gt;, and &lt;span style="font-family: Courier New;" face="Courier New"&gt;gc&lt;/span&gt; methods. However, note that this &lt;span style="font-family: Courier New;" face="Courier New"&gt;__destruct&lt;/span&gt; method must be included:&lt;/p&gt;
&lt;blockquote&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt; __destruct()&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    session_write_close(); &lt;span style="color: #008000;"&gt;// IMPORTANT!&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; &lt;span style="text-decoration: underline;"&gt;Instantiate &lt;span style="font-family: Courier New;" face="Courier New"&gt;SqlAzureSessionHandler&lt;/span&gt; before calling session functions as you normally would.&lt;/span&gt; After creating a new SqlAzureSessionHandler object, you can handle sessions as you normally would (but the data will be stored in SQL Azure):&lt;/p&gt;
&lt;blockquote&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;" id="codeSnippetWrapper"&gt;
&lt;div style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;" id="codeSnippet"&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;require_once&lt;/span&gt; &lt;span style="color: #006080;"&gt;"SqlAzureSessionHandler.php"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;$sessionHandler = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; SqlAzureSessionHandler(&lt;span style="color: #006080;"&gt;"serverId"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"username"&lt;/span&gt;, &lt;span style="color: #006080;"&gt;"password"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;session_start();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;isset&lt;/span&gt;($_POST[&lt;span style="color: #006080;"&gt;'username'&lt;/span&gt;]))&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $username = $_POST[&lt;span style="color: #006080;"&gt;'username'&lt;/span&gt;];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $password = $_POST[&lt;span style="color: #006080;"&gt;'password'&lt;/span&gt;];&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $_SESSION[&lt;span style="color: #006080;"&gt;'username'&lt;/span&gt;] = $username;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $_SESSION[&lt;span style="color: #006080;"&gt;'time'&lt;/span&gt;] = time();&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    $_SESSION[&lt;span style="color: #006080;"&gt;'otherdata'&lt;/span&gt;] = &lt;span style="color: #006080;"&gt;"some other session data"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;    header(&lt;span style="color: #006080;"&gt;"Location: welcome.php"&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&amp;rsquo;s it. Hope this is informative if not useful.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;p&gt;-Brian&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/home?status=Using SQL Azure to Store PHP Session Data: http://bit.ly/p9399X"&gt;Share this on Twitter&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10227697" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-22-76-75/SqlAzureSessionHandler.zip" length="901" type="application/zip" /><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/PHP/">PHP</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/sqlpdo/">sqlpdo</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/sqlsrv/">sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Azure/">SQL Azure</category></item><item><title>Announcing Microsoft SQL Server ODBC Driver for Linux</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/10/14/announcing-microsoft-sql-server-odbc-driver-for-linux.aspx</link><pubDate>Thu, 13 Oct 2011 17:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10224683</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/10/14/announcing-microsoft-sql-server-odbc-driver-for-linux.aspx#comments</comments><description>&lt;div style="background-color: white; margin: 14pt 0pt;"&gt;&lt;span style="font-family: Times New Roman,serif; font-size: small;" face="Times New Roman,serif" size="3"&gt;&lt;span style="font-size: 12pt; background-color: white;"&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;Greetings Developer community: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin: 14pt 0pt;"&gt;&lt;span style="font-family: Times New Roman,serif; font-size: small;" face="Times New Roman,serif" size="3"&gt;&lt;span style="font-size: 12pt; background-color: white;"&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;We heard yesterday and today at the PASS conference about the exciting new areas that we are investing in bringing the power of SQL Server to our customers. Many of our developers who rely on native connectivity to SQL Server primarily use ODBC for their connectivity needs. We have been supporting ODBC as a part of the SQL Native Access Client (SNAC) libraries. In our continued commitment to interoperability, today we also announced that we will be releasing the Microsoft SQL Server ODBC Driver for Linux. We will be releasing first community technology preview (CTP) around mid-November and will be available along with SQL Server 2012 when it is released. Please look for announcement on our &lt;/span&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/sqlserver/connectivity" target="_blank"&gt;&lt;span style="font-family: Segoe UI,sans-serif; font-size: x-small;" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;SQL Connectivity&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt; home page and &lt;/span&gt;&lt;/span&gt;&lt;a href="http://blogs.technet.com/b/dataplatforminsider/" target="_blank"&gt;&lt;span style="font-family: Segoe UI,sans-serif; font-size: x-small;" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;SQL Server&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt; blog page.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin: 14pt 0pt;"&gt;&lt;span style="font-family: Times New Roman,serif; font-size: small;" face="Times New Roman,serif" size="3"&gt;&lt;span style="font-size: 12pt; background-color: white;"&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;We will be showcasing Microsoft SQL Server ODBC Driver for Linux along with our Java and PHP solutions for SQL Server and Azure at PASS conference session &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;&lt;b&gt;&amp;ldquo;[AD-211-M] Developing Multi-Platform Applications for Microsoft SQL Server and Azure&amp;rdquo;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt; on &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;&lt;b&gt;Thursday October 13th at 5:00PM at Washington State Convention Center Room #4C4&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;. Also, if you have any questions or feedback on our multi-platform strategy as well as the entire gamut of support we provide to the application developers, I would encourage you to attend the PASS Panel Discussion with SQL Connectivity Leadership &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;&lt;b&gt;&amp;ldquo;[AD-101-M] SQL Connectivity Leadership Unplugged&amp;rdquo;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt; on &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;&lt;b&gt;Friday, October 14, 2011, 2:30 PM - 3:45 PM at Washington State Convention Centre Room# 612&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt; where I will be hosting a panel along with the rest of the leadership team that drives the strategy for our application platform.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin: 14pt 0pt;"&gt;&lt;span style="font-family: Times New Roman,serif; font-size: small;" face="Times New Roman,serif" size="3"&gt;&lt;span style="font-size: 12pt; background-color: white;"&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;Thanks,&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;&lt;br /&gt; Raghu Ram&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin: 14pt 0pt;"&gt;&lt;span style="font-family: Times New Roman,serif; font-size: small;" face="Times New Roman,serif" size="3"&gt;&lt;span style="font-size: 12pt; background-color: white;"&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;Principal Group Program Manager&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="background-color: white; margin: 14pt 0pt;"&gt;&lt;span style="font-family: Times New Roman,serif; font-size: small;" face="Times New Roman,serif" size="3"&gt;&lt;span style="font-size: 12pt; background-color: white;"&gt;&lt;span style="color: #333333; font-family: Segoe UI,sans-serif; font-size: x-small;" color="#333333" face="Segoe UI,sans-serif" size="2"&gt;&lt;span style="font-size: 9pt;" lang="en"&gt;SQL Server&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10224683" width="1" height="1"&gt;</description></item><item><title>Microsoft Drivers 3.0 for PHP for SQL Server Released!</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/09/24/microsoft-drivers-3-0-for-php-for-sql-server-released.aspx</link><pubDate>Fri, 23 Sep 2011 23:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10216052</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/09/24/microsoft-drivers-3-0-for-php-for-sql-server-released.aspx#comments</comments><description>&lt;p&gt;Dear SQL Server Developer Community, thank you very much for your feedback in driving our roadmap. Adding another milestone, the PHP Driver team is very excited to announce the availability of the &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=17308"&gt;Microsoft Drivers 3.0 for PHP for SQL Server Community Technology Preview 1&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;The major highlights of this release include: support for SQL Server Codename &amp;ldquo;Denali&amp;rdquo; features, and Buffered Queries. The &amp;ldquo;Denali&amp;rdquo; features include support for &lt;a href="http://blogs.technet.com/b/dataplatforminsider/archive/2011/08/18/alwayson-new-in-sql-server-code-name-quot-denali-quot-ctp3.aspx"&gt;AlwaysOn Connectivity&lt;/a&gt;, encompassing support for Multi-Subnet Failover, connectivity to AlwaysOn Availability Groups and Read-Only Routing, and support for &lt;a href="http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx"&gt;SQL Express LocalDB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;SQL Server Codename &amp;ldquo;Denali&amp;rdquo;: LocalDB&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="font-size: 12px; font-weight: normal;"&gt;The Microsoft Drivers for PHP for SQL Server include support for SQL Express LocalDB, a new distribution of SQL Server. LocalDB is a lightweight install, providing only the database engine. This engine is brought up automatically when an application connects to the instance, and provides easy connection-time parameters for attaching file-based databases. This feature significantly simplifies the development experience, as well as reducing the installation components necessary to develop for SQL Server. Enabling support for LocalDB is as easy as changing the connection string. An example in the SQLSRV driver:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #3366ff;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;lt;?php&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; $serverName = "(localdb)\v11.0";&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; $connectionOptions = array( "Database"=&amp;gt;"AdventureWorks", &amp;ldquo;AttachDBFileName&amp;rdquo;=&amp;gt;&amp;rdquo;AdventureWorks.mdf&amp;rdquo; );&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; /* Connect to SQL Express LocalDB. */&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&amp;nbsp; $conn = sqlsrv_connect( $serverName, $connectionOptions ); &lt;br /&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;And an example in the PDO_SQLSRV driver:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #3366ff;"&gt;&lt;code&gt;&amp;lt;?php &lt;br /&gt;&amp;nbsp; $conn = new PDO("sqlsrv:Server=(localdb)\v11.0 ; Database = AdventureWorks ; AttachDBFilename = AdventureWorks.mdf", "", ""); &lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;All functionality expected from a standard SQL Server Express instance will also function with LocalDB, as well as all standard driver functions. Additionally, databases attached at connection time will automatically be attached in the engine if they are not already, or redirected to the existing attached file if the engine already has it attached.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;SQL Server Codename &amp;ldquo;Denali&amp;rdquo;: AlwaysOn Connectivity&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The Microsoft Drivers for PHP for SQL Server include support for the AlwaysOn Connectivity feature of SQL Server Codename &amp;ldquo;Denali&amp;rdquo;:&lt;br /&gt;&lt;em&gt;SQL Server AlwaysOn is the new high availability and disaster recovery solution for the next release of SQL Server. Using AlwaysOn businesses can achieve increased application availability for their mission critical applications and get higher returns on their high availability investments through better utilization of hardware resources. AlwaysOn also increases productivity and lowers TCO by greatly simplifying high availability deployment and management.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The driver now supports the two new connection options &lt;i&gt;&amp;ldquo;ApplicationIntent&amp;rdquo; &lt;/i&gt;and &lt;i&gt;&amp;ldquo;MultiSubnetFailover&amp;rdquo;&lt;/i&gt; to support AlwaysOn connectivity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;Buffered Queries&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Finally, the driver now provides support for resultsets to be buffered on the client-side by the driver. This feature is very common amongst PHP database drivers and we are proud to bring support for this in our 3.0 CTP1 release. This is an opt-in feature which caches the entire resultset from a query into memory, therefore reducing subsequent round-trips to the server usually required to fetch the resultset row-by-row. An example where Buffered Queries is enabled in the SQLSRV driver is presented below:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #3366ff;"&gt;&lt;code&gt;&amp;lt;?php&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/* Get products by querying against the product name.*/&amp;nbsp;&lt;br /&gt;&amp;nbsp; $tsql = "SELECT ProductID, Name, Color, Size, ListPrice FROM Production.Product";&lt;br /&gt;&amp;nbsp; /* Execute the query, buffered queries enabled */&amp;nbsp;&lt;br /&gt;&amp;nbsp; $getProducts = sqlsrv_query( $conn, $tsql, null, array("Scrollable"=&amp;gt;"buffered")););&lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;And also in the PDO_SQLSRV driver:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #3366ff;"&gt;&lt;code&gt;&amp;lt;?php &lt;br /&gt;&amp;nbsp; /* Get products by querying against the product name.*/ &lt;br /&gt;&amp;nbsp; $tsql = "SELECT ProductID, Name, Color, Size, ListPrice FROM Production.Product"; &lt;br /&gt;&amp;nbsp; /* Prepare and execute the query, buffered queries enabled */ &lt;br /&gt;&amp;nbsp; $stmt = $conn-&amp;gt;prepare( $tsql, array(PDO::ATTR_CURSOR =&amp;gt; PDO::CURSOR_SCROLL, PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE =&amp;gt; PDO::SQLSRV_CURSOR_BUFFERED));&lt;br /&gt;&amp;nbsp; $stmt-&amp;gt;execute();&lt;br /&gt;?&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Documentation, Feedback and Download&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You can find documentation on the driver at our &lt;a href="http://msdn.microsoft.com/en-us/library/dd903047(SQL.10).aspx"&gt;MSDN documentation page&lt;/a&gt;, provide feedback on our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqldriverforphp/threads"&gt;MSDN Forum&lt;/a&gt; and at the &lt;a href="https://connect.microsoft.com/SQLServer/Feedback"&gt;SQL Server Connect Site&lt;/a&gt;, and (most importantly!) download the driver &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=17308"&gt;here&lt;/a&gt;. Also note that you will require the SQL Server Codename &amp;ldquo;Denali&amp;rdquo; Native Access Client, available &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26726"&gt;here&lt;/a&gt;. We encourage you to download and play with this CTP and provide us feedback. Please note that we still continue to support our v2.0 release.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d like to thank everyone on behalf of the team for supporting us in our endeavors to provide you with a high-quality driver. Happy downloading!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt;Program Manager&lt;br /&gt;Microsoft Drivers for PHP for SQL Server&lt;br /&gt;SQL Connectivity&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10216052" width="1" height="1"&gt;</description></item><item><title>Annual SQL Connectivity Customer Survey [Date extended]</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/09/08/annual-sql-connectivity-customer-survey-date-extended.aspx</link><pubDate>Wed, 07 Sep 2011 22:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10207545</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/09/08/annual-sql-connectivity-customer-survey-date-extended.aspx#comments</comments><description>&lt;p&gt;Greetings to the Developer community:&lt;/p&gt;
&lt;p&gt;Thank you very much for an overwhelming response on our survey. Feedback is continuing to pour in. We are extending the deadline to complete the survey to September 16&lt;sup&gt;th&lt;/sup&gt;, 2011 to allow everyone to provide input. Your feedback helps us on the broad SQL Connectivity components that address major development platforms, including ODBC, ADO.NET, JDBC and PHP.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We view your organization as a key stakeholder in the process that we have to identify areas for future investments. The feedback you provide is valuable and each response will be read and will be treated with utmost confidence. The survey can be found in the link below and will be available until 16&lt;sup&gt;th&lt;/sup&gt; &amp;nbsp;September, 2011 5:00 PM PST.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.zoomerang.com/Survey/WEB22CS45XT9FE/"&gt;http://www.zoomerang.com/Survey/WEB22CS45XT9FE/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Amina&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10207545" width="1" height="1"&gt;</description></item><item><title>Checking Your SQL Azure Server Connection</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/08/30/checking-your-sql-azure-server-connection.aspx</link><pubDate>Mon, 29 Aug 2011 21:55:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10202006</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/08/30/checking-your-sql-azure-server-connection.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This entry has been &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/08/25/checking-your-sql-azure-server-connection.aspx"&gt;cross-posted&lt;/a&gt; from the &lt;/em&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/"&gt;Windows Azure Team Blog&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As the SQL Azure July 2011 Service Release is being rolled out, we want to advise you of an important consideration for your application logic. Some customers may be programmatically checking to determine if their application is connected to SQL Azure or another edition of SQL Server. Please be advised, you should not base your application logic on the server version number, since it changes across upgrades and service releases. It is okay, however, to use the version number for logging purposes.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If you want to check to see if you&amp;rsquo;re connected to SQL Azure, use the following SQL statement:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;SELECT SERVERPROPERTY('EngineEdition') == 5.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;See the SQL Server Books Online for a full description of the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ee336261.aspx" target="_blank"&gt;SERVERPROPERTY function&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The current SQL Azure service release will upgrade the underlying SQL Azure database engine version from 10 to version 11 as it is rolled out across data centers.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You will see this server version number change show up in server-side APIs such as:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERVERPROPERTY('ProductVersion')&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @@VERSION&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;and also client-side APIs such as:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ODBC: SQLGetInfo (SQL_DBMS_VER)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;bull;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlClient: SqlConnection.ServerVersion&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;There will be a period of time during the service upgrade, measured in days, during which some user sessions will connect to version 10.25.bbbb.bb SQL servers and other user sessions will connect to version 11.0.bbbb.bb SQL servers (bbbb.bb is the build #).&amp;nbsp; One given user connection to one database may see different server version numbers reported at different times. At the end of the upgrade all sessions will be connecting to version 11.0.bbbb.bb SQL Servers.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;User queries and applications should continue to function normally and should not be adversely affected by the upgrade.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The July 2011 Service Release is foundational, with significant upgrades to the underlying engine that are designed to increase overall performance and scalability. This upgrade also represents a big first step towards providing a common base and feature set between the cloud SQL Azure service and our upcoming release of SQL Server Code Name &amp;ldquo;Denali&amp;rdquo;. Please read the blog post,&amp;nbsp;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/07/13/announcing-sql-azure-july-2011-service-release.aspx" target="_blank"&gt;&amp;ldquo;Announcing: SQL Azure July 2011 Service Release&amp;rdquo;&lt;/a&gt;&amp;nbsp;for more information.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;em&gt;&lt;span&gt;Greg is a product manager on the SQL Server team, focused on SQL Azure and Microsoft cloud technologies. &amp;nbsp;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10202006" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Azure/">SQL Azure</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/Developer/">Developer</category></item><item><title>Annual SQL Connectivity Customer Survey</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/08/16/annual-sql-connectivity-customer-survey.aspx</link><pubDate>Mon, 15 Aug 2011 23:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10195939</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/08/16/annual-sql-connectivity-customer-survey.aspx#comments</comments><description>&lt;p&gt;Greetings to the Developer community:&lt;/p&gt;
&lt;p&gt;Microsoft SQL Server team has been interacting on a regular basis with the developers and users in the form of surveys. During the last 2 years, we completed surveys that focused on the broad SQL Connectivity components that address major development platforms, including ODBC, ADO.NET, JDBC and PHP. These surveys provide us with an ability to validate some of the requests we have got from developers, users and partners such as you as well as ideas that we have gathered internally as a part of our development process. You have seen our roadmap for SQL Server evolve based on the feedback that we have received.&lt;/p&gt;
&lt;p&gt;We view your organization as a key stakeholder in the process that we have to identify areas for future investments. The feedback you provide is valuable and each response will be read and will be treated with utmost confidence. The survey can be found in the link below and will be available until 9th September, 2011 5:00 PM PST.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.zoomerang.com/Survey/WEB22CS45XT9FE/"&gt;http://www.zoomerang.com/Survey/WEB22CS45XT9FE/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Raghu Ram&lt;br /&gt;Principal Group Program Manager&lt;br /&gt;SQL Connectivity&lt;br /&gt;SQL Server RDBMS Group&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10195939" width="1" height="1"&gt;</description></item><item><title>Consuming SQL Server Result Sets as XML with PHP</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/08/02/consuming-sql-server-result-sets-as-xml-with-php.aspx</link><pubDate>Mon, 01 Aug 2011 17:36:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10191737</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/08/02/consuming-sql-server-result-sets-as-xml-with-php.aspx#comments</comments><description>&lt;p&gt;After the obvious interest at last month's JumpIn Camp with the XML features of SQL Server, &lt;a href="https://twitter.com/#!/brian_swan"&gt;Brian Swan &lt;/a&gt;has written a great &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/07/26/consuming-sql-server-result-sets-as-xml-with-php.aspx"&gt;post&lt;/a&gt; on consuming result sets as XML in PHP. Go check it out!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10191737" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Connectivity/">SQL Connectivity</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/sqlphp/">sqlphp</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/_2300_jumpincamp/">#jumpincamp</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/pdo_5F00_sqlsrv/">pdo_sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/jumpincamp/">jumpincamp</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/xml/">xml</category></item><item><title>PHP Driver for SQL Server now in the PHP Manual</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/07/14/php-driver-for-sql-server-now-in-the-php-manual.aspx</link><pubDate>Thu, 14 Jul 2011 00:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10186306</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/07/14/php-driver-for-sql-server-now-in-the-php-manual.aspx#comments</comments><description>&lt;p&gt;Following our recent &lt;a href="http://blogs.msdn.com/b/sqlphp/archive/2011/06/03/release-to-pecl.aspx"&gt;inclusion &lt;/a&gt;to the &lt;a href="http://pecl.php.net/"&gt;PHP Extension Community Library&lt;/a&gt;, we are also excited to announce that we have also uploaded the corresponding documentation to the &lt;a href="http://docs.php.net/manual/en/"&gt;PHP Manual&lt;/a&gt;! These are the missing pieces to our PECL extensions, and will provide PHP customers with a convenient place to find information on our extensions.&lt;/p&gt;
&lt;p&gt;You can find our Native Driver (SQLSRV) manual &lt;a href="http://docs.php.net/manual/en/book.sqlsrv.php"&gt;here&lt;/a&gt;, and our PDO Driver (PDO_SQLSRV) manual &lt;a href="http://docs.php.net/manual/en/ref.pdo-sqlsrv.php"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt;Program Manager&lt;br /&gt;PHP Driver for SQL Server&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10186306" width="1" height="1"&gt;</description></item><item><title>PHP Driver for SQL Server Feature Feedback</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/07/14/feature-feedback.aspx</link><pubDate>Wed, 13 Jul 2011 23:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10186301</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/07/14/feature-feedback.aspx#comments</comments><description>&lt;p&gt;We are currently hard at work on the development on our next version of the PHP Driver for SQL Server and would love to hear your thoughts on some features we are evaluating.&lt;/p&gt;
&lt;p&gt;To this end, how much impact do you find from the following features, and which are most important to you?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/sqlalwayson/archive/2010/12/06/introducing-sql-server-code-name-denali-alwayson.aspx"&gt;Always On&lt;/a&gt; Connectivity Support&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx"&gt;SQL Express LocalDB&lt;/a&gt; support&lt;/li&gt;
&lt;li&gt;Buffered Queries&lt;/li&gt;
&lt;li&gt;&lt;a href="http://php.net/manual/en/pdo.lobs.php"&gt;Large Objects&lt;/a&gt; (LOB) streaming support in PDO_SQLSRV&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;br /&gt;Brian quite rightly pointed out that I did not clarify what Buffered Queries were, so here's a quick blurb from his &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/07/14/php-driver-for-sql-server-request-for-feature-feedback.aspx"&gt;post&lt;/a&gt;:&lt;br /&gt;&lt;em&gt;"If it&amp;rsquo;s not obvious what that feature is, it is simply functionality that allows you to bring an entire result set into memory all at once (which the SQLSRV driver doesn&amp;rsquo;t currently support &amp;ndash; you currently have to use a scrollable cursor if you want to move back and forth within a result set)."&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Your feedback is very important for us in delivering the right features for our customers. Feel free to leave a comment below, or I am available either by email (jguerin _&lt;i&gt;at&lt;/i&gt;_ microsoft.com), &lt;a href="https://twitter.com/#%21/kop48"&gt;twitter&lt;/a&gt;, or on our &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sqldriverforphp/"&gt;forums&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt;Program Manager&lt;br /&gt;PHP Driver for SQL Server&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10186301" width="1" height="1"&gt;</description></item><item><title>SQL Server Migration Assistant 5.1 Supports SQL Server v-Next</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/07/13/sql-server-migration-assistant-5-1-supports-sql-server-v-next.aspx</link><pubDate>Tue, 12 Jul 2011 18:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10185708</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/07/13/sql-server-migration-assistant-5-1-supports-sql-server-v-next.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This entry has been &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/07/12/sql-server-migration-assistant-5-1-supports-sql-server-v-next.aspx"&gt;cross-posted&lt;/a&gt; from &lt;a href="http://blogs.msdn.com/b/brian_swan/"&gt;Brian Swan's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On the heels of today&amp;rsquo;s announcement at &lt;a href="http://www.digitalwpc.com/"&gt;Microsoft&amp;rsquo;s Worldwide Partner Conference&lt;/a&gt; of the availability of &lt;a href="http://www.microsoft.com/sqlserver/en/us/default.aspx"&gt;SQL Server&amp;nbsp; code name &amp;ldquo;Denali&amp;rdquo; CTP3&lt;/a&gt;, the SQL Server Migration Assistant Team &lt;a href="http://blogs.msdn.com/controlpanel/b/ssma/archive/2011/07/12/announcing-sql-server-migration-assistant-ssma-v-5-1.aspx"&gt;announced the release of the SQL Server Migration Assistant for MySQL 5.1&lt;/a&gt;. (You can download SSMA &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=26712"&gt;here&lt;/a&gt;.) This big news in this release of SSMA is support for SQL Server v-Next (code name &amp;ldquo;Denali&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;I am, of course, interested in how these releases might be of interest to PHP developers. For PHP developers looking to add support for SQL Server or SQL Azure to their applications or frameworks, SSMA allows you to migrate MySQL schemas and data to SQL Server 2005, 2008, &amp;ldquo;Denali&amp;rdquo;, or SQL Azure:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/4263.image_5F00_1A97A900.png"&gt;&lt;img src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/4263.image_5F00_1A97A900.png" alt="" style="max-width: 550px;" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Migrating an existing MySQL database to SQL Server allows for easy validation and testing of your work toward building in SQL Server support. (The &lt;a href="http://blogs.msdn.com/controlpanel/b/brian_swan/archive/2010/08/12/now-available-sql-server-migration-assistant-for-mysql.aspx"&gt;walkthrough I wrote a while back&lt;/a&gt; will show you how to convert schemas and data.)&lt;/p&gt;
&lt;p&gt;However, schema and data migration is only part of the story towards adding support for additional database vendors. Converting queries to another database vendor&amp;rsquo;s syntax is another key step. Fortunately, SSMA can help with that as well. In this post, &lt;a href="http://blogs.msdn.com/controlpanel/b/brian_swan/archive/2010/12/06/converting-mysql-queries-to-ms-sql-server-queries.aspx"&gt;Converting MySQL Queries to MS SQL Server Queries&lt;/a&gt;, I walk through how to use SSMA to convert a MySQL LIMIT/OFFSET query to SQL Server syntax. If you read that post, you&amp;rsquo;ll notice that the converted query uses the &lt;a href="http://msdn.microsoft.com/en-us/library/ms186734.aspx"&gt;ROW_NUMBER/OVER&lt;/a&gt; syntax (not exactly a simple, straightforward conversion). One of the nice things about SQL Server &amp;ldquo;Denali&amp;rdquo; is the new &lt;a href="http://blogs.msdn.com/controlpanel/b/ssma/archive/2011/07/12/converting-mysql-limit-to-sql-server.aspx"&gt;OFFSET/FETCH&lt;/a&gt; syntax. And, SSMA 5.1 leverages that new syntax in converting LIMIT/OFFSET queries when you are converting to SQL Server &amp;ldquo;Denali&amp;rdquo;. Here&amp;rsquo;s how to convert a query&amp;hellip;&lt;/p&gt;
&lt;p&gt;After creating a new project, connecting to MySQL, and selecting a database (details in &lt;a href="http://blogs.msdn.com/controlpanel/b/brian_swan/archive/2010/08/12/now-available-sql-server-migration-assistant-for-mysql.aspx"&gt;this post&lt;/a&gt;), right click on &lt;strong&gt;Statements&lt;/strong&gt; in the MySQL Metadata Explorer and select &lt;strong&gt;Add Statement&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/8484.image_5F00_4503DA1D.png"&gt;&lt;img src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/8484.image_5F00_4503DA1D.png" alt="" style="max-width: 550px;" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the SQL tab, type in the query you want to convert:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/7220.image_5F00_20724C99.png"&gt;&lt;img src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/7220.image_5F00_20724C99.png" alt="" style="max-width: 550px;" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Back in the MySQL Metadata Explorer, right-click &lt;strong&gt;Statements&lt;/strong&gt; and select &lt;strong&gt;Create Report&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/2526.image_5F00_644680F0.png"&gt;&lt;img src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/2526.image_5F00_644680F0.png" alt="" style="max-width: 550px;" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When prompted to save changes to the MySQL Editor, click &lt;strong&gt;Yes&lt;/strong&gt;. The resulting converted query is MUCH nicer than before:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/1524.image_5F00_5FD00029.png"&gt;&lt;img src="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/1524.image_5F00_5FD00029.png" alt="" style="max-width: 550px;" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In fact, the new OFFSET/FETCH syntax makes it so easy to convert queries that you might wonder why you would need SSMA for this. Well, the OFFSET/FETCH syntax only works for SELECT queries (unlike MySQL), and there are some corner cases in which the MySQL LIMIT/OFFSET syntax doesn&amp;rsquo;t convert to the SQL Server OFFSET/FETCH syntax. Fortunately, SSMA handles those corner cases nicely (although, in some cases it reverts to conversion using the ROW_NUMBER/OVER syntax). So, in some cases, SSMA might still come in handy when converting queries.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m excited to see the releases of SQL Server &amp;ldquo;Denali&amp;rdquo; CTP3 and SSMA for MySQL 5.1, And, as always, I&amp;rsquo;m eager to hear your questions and/or comments.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;
&lt;p&gt;-Brian&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10185708" width="1" height="1"&gt;</description></item><item><title>SQL Server JumpIn! Camp Wrap Up</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/06/28/sql-server-jumpin-camp-wrap-up.aspx</link><pubDate>Mon, 27 Jun 2011 19:27:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10179593</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/06/28/sql-server-jumpin-camp-wrap-up.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This entry has been &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/06/24/sql-server-jumpin-camp-wrap-up.aspx"&gt;cross-posted&lt;/a&gt; from &lt;a href="http://blogs.msdn.com/controlpanel/b/brian_swan/"&gt;Brian Swan's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As I arrived yesterday for day 4 (the last day) of the &lt;a href="http://www.jumpincamp.com/"&gt;SQL Server JumpIn! Camp&lt;/a&gt;, one participant said to me,&amp;ldquo;I&amp;rsquo;m starting to feel worn down.&amp;rdquo; I think that was the general sentiment of everyone that was there&amp;hellip;and with good reason. During each day of the camp, PHP developers worked side-by-side with Microsoft developers to add SQL Server and SQL Azure support to their projects, but nearly everyone put in many extra hours late at night (and even early morning!) to add support for other Microsoft technologies (such as IIS, Web Platform Installer, and Windows Azure). The amount of work done by the participants was incredible. You can get a sense of just how much progress was made by this picture of our &amp;ldquo;progress&amp;rdquo; board taken on the last day of the camp:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/1526.JICWork_5F00_done_5F00_thumb_5F00_2016766D.jpg"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/1526.JICWork_5F00_done_5F00_thumb_5F00_2016766D.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I can&amp;rsquo;t say thanks enough to all the participants for being 100% invested in the camp and for going the extra mile to investigate how their projects might be able to integrate Microsoft technologies beyond SQL Server and SQL Azure. I know that the entire SQL Server team echoes my thanks.&lt;/p&gt;
&lt;p&gt;And now, the hard work for Microsoft developers begins. A primary goal of the camp was for Microsoft developers to learn from PHP developers so that they can build Microsoft products that work better and better with PHP and PHP applications/frameworks. Throughout the camp, we tracked requests by asking participants to post their &amp;ldquo;wish list&amp;rdquo; items on a white board. This picture will give you a sense for some of the feedback we received, though we actually got much more feedback in one-on-one conversations:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/1526.JICWork_5F00_done_5F00_thumb_5F00_2016766D.jpg"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-33-78-metablogapi/1526.JICWork_5F00_done_5F00_thumb_5F00_2016766D.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So now it&amp;rsquo;s time to take this feedback, prioritize it, plan, and act on it. We did this after the last SQL Server JumpIn! Camp, and the progress we have made since then was well received at this camp. With more hard work, we will make similar progress by the next camp.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;An observation&lt;/strong&gt;: The camp wasn&amp;rsquo;t all about progress and feedback. Some of the best conversations centered on &lt;em&gt;why&lt;/em&gt; something was the way it was. PHP developers learned &lt;em&gt;why&lt;/em&gt; a Microsoft feature or API was designed the way it was, and Microsoft developers learned &lt;em&gt;why&lt;/em&gt; those features/APIs might pose hurdles for PHP developers. In some cases, these conversations led to something actionable, but in other cases it just led to understanding. This, IMHO, was one of the most valuable aspects of the camp. That mutual understanding will eventually lead to better interoperability.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Finally, don&amp;rsquo;t get the impression that the camp was &lt;em&gt;all&lt;/em&gt; work. It wasn&amp;rsquo;t. We had a BBQ competition, dinner at Seattle&amp;rsquo;s Space Needle, and wine tasting/dinner at the Columbia winery in Woodinville. In addition to all that, everyone found time (at the expense of enough sleep!) to catch up with old friends and make new ones. I, personally, had a great time getting to know new people or people I had only met briefly or know only through Twitter and/or blogs.&lt;/p&gt;
&lt;p&gt;I think it&amp;rsquo;s safe to say that you will see more posts (but of a technical nature) that are the fruit of this camp (I learned a ton and want to share what I learned). In the mean time, another HUGE thanks to all the camp participants! I&amp;rsquo;m looking forward to the next camp.&lt;/p&gt;
&lt;p style="padding-left: 30px;"&gt;&lt;strong&gt;Edit&lt;/strong&gt;: If you are interested in more of the who, what, and why of the SQL Server JumpIn! Camp, read/listen to the blog posts/podcasts &lt;a href="http://twitter.com/#%21/calevans"&gt;Cal Evans&lt;/a&gt; did during the camp...&lt;/p&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"&gt;&lt;a href="http://voicesoftheelephpant.com/2011/06/23/interview-with-paul-m-jones-2/"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://devzone.zend.com/article/15583-Microsofts-second-SQL-Server-Jump-In-Camp"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;http://devzone.zend.com/article/15583-Microsofts-second-SQL-Server-Jump-In-Camp&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;&lt;a href="http://devzone.zend.com/article/15598-Jump-In-Camp---Who-is-here-and-what-are-they-doing"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;http://devzone.zend.com/article/15598-Jump-In-Camp---Who-is-here-and-what-are-they-doing&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;&lt;a href="http://voicesoftheelephpant.com/2011/06/23/interview-with-paul-m-jones-2/"&gt;http://voicesoftheelephpant.com/2011/06/23/interview-with-paul-m-jones-2/&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"&gt;&lt;a href="http://voicesoftheelephpant.com/2011/06/22/interview-with-keith-casey/"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;http://voicesoftheelephpant.com/2011/06/22/interview-with-keith-casey/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"&gt;&lt;a href="http://voicesoftheelephpant.com/2011/06/21/interview-with-matthew-weier-ophinney-and-ralph-schindler/"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;http://voicesoftheelephpant.com/2011/06/21/interview-with-matthew-weier-ophinney-and-ralph-schindler/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"&gt;&lt;a href="http://voicesoftheelephpant.com/2011/06/24/interview-with-mark-j-brown/"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;http://voicesoftheelephpant.com/2011/06/24/interview-with-mark-j-brown/&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;-Brian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10179593" width="1" height="1"&gt;</description></item><item><title>Looking Forward to Next Week’s SQL Server JumpIn! Camp</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/06/16/looking-forward-to-next-week-s-sql-server-jumpin-camp.aspx</link><pubDate>Wed, 15 Jun 2011 16:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10174925</guid><dc:creator>Jonathan Guerin</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/06/16/looking-forward-to-next-week-s-sql-server-jumpin-camp.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;This entry has been &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/06/15/looking-forward-to-next-week-s-sql-server-jumpin-camp.aspx"&gt;cross-posted&lt;/a&gt; from &lt;a href="http://blogs.msdn.com/b/brian_swan/"&gt;Brian Swan's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Next week, Microsoft will host its second &lt;a href="http://jumpincamp.com/"&gt;SQL Server JumpIn! Camp&lt;/a&gt;, and I&amp;rsquo;m very excited to be a participant (take a look at the list (below) of PHP applications and frameworks that will be represented and you will understand why!). I was fortunate enough to attend the first JumpIn! Camp (last November), and what I liked most about that camp was that it was an excellent &lt;span style="text-decoration: underline;"&gt;two-way&lt;/span&gt; learning experience. The main goal of the first camp was (and &lt;em&gt;is&lt;/em&gt; for next week&amp;rsquo;s camp) to add SQL Server support to several PHP applications and frameworks. (To understand &lt;em&gt;why&lt;/em&gt; this was the goal, read these two interviews: &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/03/10/interview-with-julian-egelstaff-technical-architect-at-freeform-solutions.aspx"&gt;Interview with Julian Egelstaff, Technical Architect at Freeform Solutions&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/01/18/interview-ashay-chaudhary-on-the-sql-server-jumpin-camp.aspx"&gt;Interview: Ashay Chaudhary on the SQL Server JumpIn! Camp&lt;/a&gt;.) In the first camp (as will be in the second camp) PHP and Microsoft developers worked side-by-side to learn from each other in working toward this goal. The end result was that, in addition to the stated goal being achieved, both PHP and Microsoft developers learned a great deal about each other and their respective technologies. (To see some of what I learned at the camp, check out these articles: &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/tags/jumpin+camp/"&gt;http://blogs.msdn.com/b/brian_swan/archive/tags/jumpin+camp/&lt;/a&gt;.) I have every reason to expect next week&amp;rsquo;s camp to provide a similar experience for all involved.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the list of PHP&lt;strong&gt; &lt;/strong&gt;Applications and Frameworks that will be represented at next week&amp;rsquo;s SQL Server JumpIn! Camp:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.agavi.org/"&gt;Agavi&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/auraphp"&gt;AuraPHP&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://cakephp.org/"&gt;CakePHP&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://getfrapi.com/"&gt;FRAPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mediawiki.org/wiki/MediaWiki"&gt;MediaWiki&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.twilio.com/api/openvbx"&gt;OpenVBX&lt;/a&gt;/&lt;a href="http://www.twilio.com/api/"&gt;Twilio&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://pear.php.net/"&gt;PEAR&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.symfony-project.org/"&gt;Symfony&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://vocecommunications.com/"&gt;Voce Communications&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://web2project.net/"&gt;Web2Project&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://framework.zend.com/"&gt;Zend&amp;nbsp;Framework&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Look for updates about the camp next week on Twitter (we&amp;rsquo;ll use the #jumpincamp hash tag).&lt;/p&gt;
&lt;p&gt;-Brian&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10174925" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/jump+in_2100_/">jump in!</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/_2300_jumpincamp/">#jumpincamp</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/jumpincamp/">jumpincamp</category></item><item><title>Release to PECL</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/06/03/release-to-pecl.aspx</link><pubDate>Fri, 03 Jun 2011 21:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10171239</guid><dc:creator>dpblogs</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/06/03/release-to-pecl.aspx#comments</comments><description>&lt;p&gt;On behalf of the Microsoft PHP Driver for SQL Server team, it is my great pleasure to announce that we have published both &lt;a href="http://news.php.net/php.pecl.dev/8318"&gt;SQLSRV&lt;/a&gt; and &lt;a href="http://news.php.net/php.pecl.dev/8319"&gt;PDO_SQLSRV&lt;/a&gt; to the &lt;a href="http://pecl.php.net/"&gt;PHP Extension Community Library&lt;/a&gt;!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can find our packages at:&lt;br /&gt;&lt;a href="http://pecl.php.net/package/sqlsrv"&gt;http://pecl.php.net/package/sqlsrv&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pecl.php.net/package/pdo_sqlsrv"&gt;http://pecl.php.net/package/pdo_sqlsrv&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This has been a long-standing request from the PHP community, and we are pleased to finally be able to do this. At Microsoft, we have steadily &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2010/10/07/reflecting-on-php-microsoft-interoperability.aspx"&gt;increased our participation&lt;/a&gt; in the PHP community, and this is another great milestone towards that goal. On behalf of the team, I would like to say that we are very proud to be amongst some of the best PHP extensions published on PECL!&lt;/p&gt;
&lt;p&gt;Thank you,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt;Program Manager&lt;br /&gt;PHP Driver for SQL Server&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10171239" width="1" height="1"&gt;</description></item><item><title>Introduction and Removal of PHP Driver for SQL Server 1.1 download links.</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/04/29/introduction-and-removal-of-php-driver-for-sql-server-1-1-download-links.aspx</link><pubDate>Fri, 29 Apr 2011 23:26:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10159662</guid><dc:creator>dpblogs</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/04/29/introduction-and-removal-of-php-driver-for-sql-server-1-1-download-links.aspx#comments</comments><description>&lt;p&gt;I should precede the following post with an introduction. I
recently started at Microsoft as the Program Manager for the PHP Driver for SQL
Server&lt;span style="text-decoration: line-through;"&gt;&lt;/span&gt;. Since then, I&amp;rsquo;ve
been ramping up on the many aspects of the job, not the least of which is
learning what makes the PHP community great!&lt;/p&gt;
&lt;p&gt;&lt;b&gt;With our release of the PHP Driver for SQL Server 2.0
driver last year, we are planning to remove download
link&lt;span style="text-decoration: line-through;"&gt;s&lt;/span&gt; to the PHP Driver for SQL Server 1.1 May 31&lt;sup&gt;st&lt;/sup&gt; 2011.&lt;/b&gt; The PHP Driver
for SQL Server 2.0 release includes the Native APIs present in the PHP Driver
for SQL Server 1.1 release, as well as &lt;a href="http://blogs.msdn.com/b/sqlphp/archive/2010/08/04/microsoft-drivers-for-php-for-sql-server-2-0-released.aspx"&gt;&lt;span style="text-decoration: line-through;"&gt;&lt;/span&gt;support for the PDO API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Moving forward, the existing PHP Driver for SQL Server 1.1
download page will redirect to the PHP Driver for SQL Server 2.0 page. Please
contact us if &lt;span style="text-decoration: line-through;"&gt;&lt;/span&gt;there are any compatibility issues you come across
and we will work hard to resolve these.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d like to extend a hand to everyone and ask you to contact
us at our &lt;a href="http://social.msdn.microsoft.com/Forums/en/sqldriverforphp/"&gt;forums&lt;/a&gt; if you have any
problems with the existing version. Additionally, as we work on our next
version, we&amp;rsquo;d love to hear from you if you find that there is anything &lt;span style="text-decoration: line-through;"&gt;&lt;/span&gt;you think we should implement.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Jonathan Guerin&lt;br /&gt;Program Manager&lt;br /&gt;PHP Driver for SQL Server&lt;br /&gt;Microsoft Corporation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10159662" width="1" height="1"&gt;</description></item><item><title>Drupal 7 and SQL Server – our PDO journey</title><link>http://blogs.msdn.com/b/sqlphp/archive/2011/01/25/drupal-7-and-sql-server-our-pdo-journey.aspx</link><pubDate>Wed, 26 Jan 2011 05:51:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10120345</guid><dc:creator>Ashay Chaudhary [MSFT]</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2011/01/25/drupal-7-and-sql-server-our-pdo-journey.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.msdn.com/b/sqlphp/archive/2011/01/25/drupal-7-and-sql-server-our-pdo-journey.aspx" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;Drupal 7 &lt;a href="http://buytaert.net/drupal-7.0-released"&gt;completed a 3-year journey&lt;/a&gt; earlier this year by exiting beta stages and &lt;a href="http://drupal.org/drupal-7.0"&gt;declaring itself ready for prime time&lt;/a&gt;. Our team (the SQL Server Drivers for PHP team) was fortunate to be part of that journey by working closely with the Drupal community to add SQL Server support to this release. We learned a great deal along the way and helped deliver in Drupal 7 release that benefits the Drupal community, Microsoft, and most importantly the Drupal users. In this post, I’d like to provide some insight to the part of the Drupal 7 journey that we shared.&lt;/p&gt;  &lt;p&gt;The journey for us began almost a year ago (in February 2010) when an unusual request happened across my desk – &lt;a href="http://twitter.com/#!/DamZ"&gt;Damien Tournoud, &lt;/a&gt;from the Drupal Core team, had sent an email to Microsoft expressing interest in adding support for SQL Server to Drupal 7. To be perfectly honest, we knew there had been a fair bit of interest for a while within the Drupal community to support SQL Server as evident in &lt;a href="http://drupal.org/node/74308"&gt;this thread&lt;/a&gt; and &lt;a href="http://groups.drupal.org/node/7654"&gt;this&lt;/a&gt; thread. However, we also know that Drupal 7 had decided to move to PDO…and we didn’t have a PDO driver – yet. Since I had only recently joined the SQL Server Driver for PHP team and was ramping up fast on the team’s PDO effort, getting our work included in Drupal 7 was interesting proposition, albeit a daunting one.&lt;/p&gt;  &lt;p&gt;The SQL Server team strongly believes in partnering with key customers during the development process via our Technology Adoption Program, but doing this in the PHP space is relatively new for us. Fortunately, because PDO is fairly well defined, we were able to move quickly on the technical side and didn't feel there was a need for such partnerships for this release. Of course, we did plan to have a CTP (i.e. Beta) available for broader testing and feedback on our implementation.&lt;/p&gt;  &lt;p&gt;After doing the homework to make sure we could deliver on time, we welcomed the opportunity to work with Drupal 7 for early technology adoption for our PDO driver. As I mentioned before, there weren’t many precedents within Microsoft for open source projects and we had a fair amount of work in getting things worked out. Doing this on an extremely tight timeline wasn’t a trivial task, but we managed it. We must thank Pierre Couzy from Microsoft France for providing terrific support in getting things off the ground.&lt;/p&gt;  &lt;p&gt;At the same time we were figuring out how to work with the Commerce Guys, Damien, Pierre and I were also working out the technical details and timelines - including an incredibly optimistic goal to jointly announce our releases (our PDO driver, their Drupal 7 SQL Server Module) at DrupalCon San Francisco 2010. On our end, we decided to modify our release plan into to include two CTPs (i.e. betas) instead of the originally planned single CTP. We were almost done with our code refactoring at that time and we were wiring up the PDO API layer to the functional layer (see &lt;a href="http://blogs.msdn.com/b/sqlphp/archive/2010/08/04/microsoft-drivers-for-php-for-sql-server-2-0-released.aspx"&gt;this&lt;/a&gt; post on the new architecture), but we felt that two CTP’s would provide the opportunity for more valuable feedback. We converged on the completion dates and began sending Damien private builds to test with.&lt;/p&gt;  &lt;p&gt;Working with Damien over the next two weeks was both intense and fun. That balance of intensity and fun was crucial to our success. We ran into several issues, but none that we couldn’t resolve or work around and continue our momentum. We didn’t let up and soon we were ready to release our new PDO driver via the &lt;a href="http://blogs.msdn.com/b/sqlphp/archive/2010/04/19/sql-server-driver-for-php-2-0-ctp-adds-php-s-pdo-style-data-access-for-sql-server.aspx"&gt;first CTP in April&lt;/a&gt; along with the &lt;a href="http://drupal.org/project/sqlsrv"&gt;Drupal 7 SQL Server Module&lt;/a&gt;. The actual announcement at &lt;a href="http://www.commerceguys.com/resources/news/drupal-7-sql-server-preview"&gt;DrupalCon San Francisco 2010&lt;/a&gt; was complicated by the ash cloud emanating from Iceland, but by most accounts the joint announcement was a success.&lt;/p&gt;  &lt;p&gt;One of the best things to come out of the Drupal effort was some great feedback on our driver. Damien’s knowledge and expertise in database support for Drupal is impressive (Damien also drives/owns the PostgreSQL and SQLite database support in Drupal). Part of what made this interoperability effort a success was that we had the “rights” in place – attitude, environment, incentive, and people (read this &lt;a href="http://blogs.msdn.com/b/brian_swan/archive/2011/01/18/interview-ashay-chaudhary-on-the-sql-server-jumpin-camp.aspx"&gt;interview&lt;/a&gt; on the &lt;a href="http://www.jumpincamp.com"&gt;SQL Server JumpIn! Camp&lt;/a&gt; for more of my thoughts on the “rights”).&lt;/p&gt;  &lt;p&gt;The announcement at DrupalCon did not mark the completion of our work, however. We didn’t have time to incorporate all the feedback we had received, so we were back at the drawing board to incorporate some of the feedback that would require some parts of the PDO driver to be redesigned. We made those &lt;a href="http://blogs.msdn.com/b/sqlphp/archive/2010/06/03/plans-for-our-next-milestone.aspx"&gt;design changes&lt;/a&gt; and included the new PDO driver in our next CTP (good thing we decided on TWO CTPs!). We would realize later that we had some of the best feedback on our PDO driver in those early weeks! Our team received feedback from several sources that we made the right choice in the design changes and simplified their adoption of our PDO driver.&lt;/p&gt;  &lt;p&gt;Drupal 7 in the meanwhile was making great progress, and our relationship with the Drupal community was now established and growing. At the JumpIn! Camp at Zurich we met another Drupal developer, Marcus Deglos, who later wrote the &lt;a href="http://drupal.org/project/zoomit"&gt;ZoomIt module&lt;/a&gt; when he learned about the &lt;a href="http://msdn.microsoft.com/en-us/library/cc645050%28VS.95%29.aspx"&gt;Deep Zoom&lt;/a&gt; technology (he authored the module in a few hours!). The ZoomIt module is just one more example of interoperability between Microsoft and Drupal. &lt;a href="http://blogs.msdn.com/b/interoperability/archive/2011/01/24/using-drupal-on-windows-azure-hands-on-with-4-new-drupal-modules.aspx"&gt;This post on Drupal interoperability with Microsoft&lt;/a&gt; technologies lists even more modules that demonstrate great interoperability between Drupal and several Microsoft technologies.&lt;/p&gt;  &lt;p&gt;Our relationship with Drupal has continued. We have worked with the Drupal Core group to figure out how Microsoft could assist in setting up an automated testing infrastructure for Drupal Core on Windows. Now, tests are automatically scheduled on Drupal 7 Core on Windows with SQL Server (see their &lt;a href="http://ci.drupal.org/"&gt;test status dashboard&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Along the way, more people from Microsoft got involved in this journey that built on the initial momentum and special mention is deserved by Pierre Couzy and Grace Francisco for their fantastic efforts. We also got the opportunity to meet and work with some really great folks from the Drupal community.&lt;/p&gt;  &lt;p&gt;With SQL Server support introduced in Drupal 7 and with PHP support or Windows significantly improved in recent years, Drupal 7 deployments now can benefit from the robust scalability and security offered by SQL Server, as well as its cool features like online backup, high availability, business intelligence, etc. The Commerce Guys have provided a &lt;a href="http://www.microsoft.com/web/gallery/D7DevSQL.aspx"&gt;Drupal 7 Developer Preview&lt;/a&gt; distribution available via the Web Platform Installer as well as &lt;a href="http://www.microsoft.com/web/webmatrix/"&gt;WebMatrix&lt;/a&gt;. Having reached this foundational milestone, we still have some ground to cover – we don’t have a cloud solution yet. We have received several inquiries about running Drupal 7 on Windows Azure, and we are exploring this option.&lt;/p&gt;  &lt;p&gt;Until then, we encourage you to try Drupal 7 with SQL Server and send us your feedback.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ashay Chaudhary      &lt;br /&gt;&lt;/strong&gt;Program Manager, SQL Server PHP Driver&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4aa606d5-cb09-4bab-a78e-fa299edc0b32" class="wlWriterSmartContent"&gt;BuzzNet Tags: &lt;a href="http://www.buzznet.com/tags/drupal" rel="tag"&gt;drupal&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/php" rel="tag"&gt;php&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/sql+server" rel="tag"&gt;sql server&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/jumpincamp" rel="tag"&gt;jumpincamp&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/mssql" rel="tag"&gt;mssql&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/sqlsrv" rel="tag"&gt;sqlsrv&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/pdo" rel="tag"&gt;pdo&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/pdo_sqlsrv" rel="tag"&gt;pdo_sqlsrv&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10120345" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/PHP/">PHP</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/PDO/">PDO</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/mssql/">mssql</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/sqlsrv/">sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/pdo_5F00_sqlsrv/">pdo_sqlsrv</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/jumpincamp/">jumpincamp</category><category domain="http://blogs.msdn.com/b/sqlphp/archive/tags/drupal/">drupal</category></item><item><title>Update release of the Microsoft Drivers for PHP for SQL Server</title><link>http://blogs.msdn.com/b/sqlphp/archive/2010/11/30/update-release-of-the-microsoft-drivers-for-php-for-sql-server.aspx</link><pubDate>Wed, 01 Dec 2010 07:39:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10098798</guid><dc:creator>Ashay Chaudhary [MSFT]</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/b/sqlphp/archive/2010/11/30/update-release-of-the-microsoft-drivers-for-php-for-sql-server.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.msdn.com/b/sqlphp/archive/2010/11/30/update-release-of-the-microsoft-drivers-for-php-for-sql-server.aspx" scrolling="no" frameborder="0" style="border:none; width:450px; height:80px"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;The recent version 2.0 of the driver has been very well received, with a fair amount of activity on our forum. Our team has been actively engaged with providing support to our developer community to adopt this version – especially the PDO driver.&lt;/p&gt;  &lt;p&gt;Based on the issues reported so far, we found that a few critical bugs slipped thru our testing net, root caused them and then spent some time understanding their impact. After the due diligence, we have narrowed the list of bugs down to those that have broad impact and fixed them in this update release. They are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Long column names allowed by SQL Server (up to 128 characters) were incorrectly truncated to 29 chars. Any application that attempted to use column names allowed by SQL Server stopped working. The update release correctly handles column names up to 128 characters.&lt;/li&gt;    &lt;li&gt;PDO::quote() added a null terminator to the end of the string. The update release does not add a null terminator to the end of the quoted string.&lt;/li&gt;    &lt;li&gt;An error could occur when binding null data to server columns of type varbinary, binary, or varbinary(max). The update release will not throw an error if one specifies binary encoding (PDO::SQLSRV_ENCODING_BINARY) using the $driver_options parameter of PDOStatement::bindParam().&lt;/li&gt;    &lt;li&gt;An access violation could occur in the error handler routine for some error cases, causing the PHP process to abruptly stop. These error handler routines in the update release will no longer cause an access violation.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These are also listed in the readme file included in our download package. Do note that since the number of fixes are small, we have updated only the Product/File version of the driver binaries &lt;u&gt;from 2.0.1426.0&lt;/u&gt; (version 2.0 released August 5) &lt;u&gt;to 2.0.1802.200&lt;/u&gt; (version 2.0.1 released November 30). In addition to the package on the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;amp;FamilyID=80e44913-24b4-4113-8807-caae6cf2ca05" target="_blank"&gt;MSDN Download Center&lt;/a&gt;, we have also updated the package used by the Web Platform Installer.&lt;/p&gt;  &lt;p&gt;In addition to the additional testing coverage from some of our close partners, we also gave this update release additional test coverage at the recent SQL Server JumpIn! Camp I blogged about yesterday.&lt;/p&gt;  &lt;p&gt;We are confident that this update release is more stable and recommend all our customers to upgrade to this release very soon.&lt;/p&gt;  &lt;p&gt;We thank you all for your continued support,&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ashay Chaudhary&lt;/strong&gt;    &lt;br /&gt;Program Manager – PHP SQL Server&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:48a010ec-be71-4307-9431-623352fdf39a" class="wlWriterSmartContent"&gt;BuzzNet Tags: &lt;a href="http://www.buzznet.com/tags/SQL+Server" rel="tag"&gt;SQL Server&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/sqlsrv" rel="tag"&gt;sqlsrv&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/pdo_sqlsrv" rel="tag"&gt;pdo_sqlsrv&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/pdo" rel="tag"&gt;pdo&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/php" rel="tag"&gt;php&lt;/a&gt;,&lt;a href="http://www.buzznet.com/tags/release" rel="tag"&gt;release&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10098798" width="1" height="1"&gt;</description></item></channel></rss>