diff --git a/core/includes/schema.inc b/core/includes/schema.inc
index aa3984b..45ac9a2 100644
--- a/core/includes/schema.inc
+++ b/core/includes/schema.inc
@@ -119,7 +119,9 @@ function drupal_install_schema($module) {
   _drupal_schema_initialize($schema, $module, FALSE);
 
   foreach ($schema as $name => $table) {
-    db_create_table($name, $table);
+    Database::getConnection('default', $schema[$name]['database key'])
+      ->schema()
+      ->createTable($name, $table);
   }
 }
 
@@ -133,9 +135,10 @@ function drupal_uninstall_schema($module) {
   $schema = drupal_get_module_schema($module);
   _drupal_schema_initialize($schema, $module, FALSE);
 
-  foreach ($schema as $table) {
-    if (db_table_exists($table['name'])) {
-      db_drop_table($table['name']);
+  foreach ($schema as $name => $table) {
+    $connection = Database::getConnection('default', $schema[$name]['database key']);
+    if ($connection->schema()->tableExists($table['name'])) {
+      $connection->schema()->dropTable($table['name']);
     }
   }
 }
@@ -192,6 +195,9 @@ function _drupal_schema_initialize(&$schema, $module, $remove_descriptions = TRU
     if (!isset($table['name'])) {
       $table['name'] = $name;
     }
+    if (!isset($table['database key'])) {
+      $table['database key'] = 'default';
+    }
     if ($remove_descriptions) {
       unset($table['description']);
       foreach ($table['fields'] as &$field) {
