diff --git a/sqlsrv/database.inc b/sqlsrv/database.inc
--- a/sqlsrv/database.inc
+++ b/sqlsrv/database.inc
@@ -78,7 +78,7 @@
 
     // Fetch the name of the user-bound schema. It is the schema that SQL Server
     // will use for non-qualified tables.
-    $this->schema()->defaultSchema = $this->query("SELECT SCHEMA_NAME()")->fetchField();
+    $this->schema()->defaultSchema = parent::query("SELECT SCHEMA_NAME()")->fetchField();
   }
 
   /**
@@ -131,7 +131,7 @@
     # Everything that follows a boundary that is not : or _.
     \b(?<![:\[_])(?:
       # Any reserved words, followed by a boundary that is not an opening parenthesis.
-      (action|admin|alias|any|are|array|at|begin|boolean|class|commit|contains|current|data|date|day|depth|domain|external|file|full|function|get|go|host|input|language|last|less|local|map|min|module|new|no|object|old|open|operation|parameter|parameters|path|plan|prefix|proc|public|ref|result|returns|role|row|rows|save|search|second|section|session|size|state|statistics|temporary|than|time|timestamp|tran|translate|translation|trim|user|value|variable|view|without)
+      (action|admin|alias|any|are|array|at|begin|boolean|class|commit|contains|current|data|date|day|depth|domain|external|file|full|function|get|go|host|input|language|last|less|local|map|min|module|new|no|object|old|open|operation|parameter|parameters|path|plan|prefix|proc|public|ref|result|returns|role|row|rows|rule|save|search|second|section|session|size|state|statistics|temporary|than|time|timestamp|tran|translate|translation|trim|user|value|variable|view|without)
       (?!\()
       |
       # Or a normal word.
@@ -265,7 +265,7 @@
    */
   public function preprocessQuery($query) {
     // Force quotes around some SQL Server reserved keywords.
-    if (preg_match('/^SELECT/', $query)) {
+    if (preg_match('/^SELECT/i', $query)) {
       $query = preg_replace_callback(self::RESERVED_REGEXP, array($this, 'replaceReservedCallback'), $query);
     }
 
@@ -377,6 +377,20 @@
     // Rescue the # prefix from the escaping.
     return ($table[0] == '#' ? '#' : '') . preg_replace('/[^A-Za-z0-9_.]+/', '', $table);
   }
+  
+  /**
+   * Override DatabaseConnection::query().
+   *
+   * Apply processing to raw database queries, requires thorough test
+   * Possibility of adding too much processing overhead to simple queries
+   *
+   * @status needswork
+   */
+  public function query($query, array $args = array(), array $options = array())
+  {
+    $query = $this->preprocessQuery($query);
+	return parent::query($query, $args, $options);
+  }
 }
 
 class DatabaseStatement_sqlsrv extends DatabaseStatementPrefetch implements Iterator, DatabaseStatementInterface {
