<?php /** * Specific support for SQL Azure databases running on Windows Azure. * Currently only supports the SQLSRV driver from Microsoft. * * Some important things about SQL Azure: * * Selecting a database is not supported. * In order to change the database currently in use, you need to connect to * the database using the "Database" parameter with sqlsrv_connect() * * Multiple active result sets are not supported. This means you can't * have two query results open at once. * * Fulltext indexes are not supported. * * @author Sean Harvey <sean at silverstripe dot com> * @package mssql */ class MSSQLAzureDatabase extends MSSQLDatabase { protected $fullTextEnabled = false; public function __construct($parameters) { $this->connectDatabase($parameters); } /** * Connect to a SQL Azure database with the given parameters. * @param array $parameters Connection parameters set by environment * @return resource SQL Azure database connection link */ protected function connectDatabase($parameters) { $this->dbConn = sqlsrv_connect($parameters['server'], array( 'Database' => $parameters['database'], 'UID' => $parameters['username'], 'PWD' => $parameters['password'], 'MultipleActiveResultSets' => '0' )); $this->tableList = $this->fieldList = $this->indexList = null; $this->database = $parameters['database']; $this->active = true; $this->fullTextEnabled = false; $this->query('SET QUOTED_IDENTIFIER ON'); $this->query('SET TEXTSIZE 2147483647'); } /** * Switches to the given database. * * If the database doesn't exist, you should call * createDatabase() after calling selectDatabase() * * IMPORTANT: SQL Azure doesn't support "USE", so we need * to reinitialize the database connection with the requested * database name. * * @param string $dbname The database name to switch to */ public function selectDatabase($dbname) { global $databaseConfig; $parameters = $databaseConfig; $parameters['database'] = $dbname; $this->connectDatabase($parameters); } }