ENHANCEMENT Added MSSQLDatabaseConfigurationHelper::requireDatabaseVersion() to check for SQL Server 2008 SP1 as a minimum requirement

This commit is contained in:
Sean Harvey 2010-05-13 12:25:54 +00:00
parent cb499039ab
commit 104a242b97

View File

@ -98,6 +98,50 @@ class MSSQLDatabaseConfigurationHelper implements DatabaseConfigurationHelper {
);
}
/**
* Ensure that the SQL Server version is at least 10.00.1600 (SQL Server 2008 RTM).
* @see http://www.sqlteam.com/article/sql-server-versions
* @param array $databaseConfig Associative array of db configuration, e.g. "server", "username" etc
* @return array Result - e.g. array('success' => true, 'error' => 'details of error')
*/
public function requireDatabaseVersion($databaseConfig) {
$success = false;
$error = '';
$version = 0;
// Get the version using SERVERPROPERTY() function
if(function_exists('mssql_connect')) {
$conn = @mssql_connect($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], true);
$result = @mssql_query("SELECT SERVERPROPERTY('ProductVersion')", $conn);
$row = @mssql_fetch_array($result);
} else {
$conn = @sqlsrv_connect($databaseConfig['server'], array(
'UID' => $databaseConfig['username'],
'PWD' => $databaseConfig['password']
));
$result = @sqlsrv_query($conn, "SELECT SERVERPROPERTY('ProductVersion')");
$row = @sqlsrv_fetch_array($result);
}
if($row && isset($row[0])) {
$version = $row[0];
}
if($version) {
$success = version_compare($version, '10.00.1600', '>=');
if(!$success) {
$error = "Your SQL Server version is $version. It's recommended you use at least 10.00.2531 (SQL Server 2008 SP1).";
}
} else {
$error = "Your SQL Server version could not be determined.";
}
return array(
'success' => $success,
'error' => $error
);
}
/**
* Ensure that the database connection is able to use an existing database,
* or be able to create one if it doesn't exist.