diff --git a/src/metabase/events/activity_feed.clj b/src/metabase/events/activity_feed.clj
index c93fdca03654615e58a9dbd9a2fb9e16d2ef6ef4..0387c9ac84dc3a5bbe095d5664d92590c924ab11 100644
--- a/src/metabase/events/activity_feed.clj
+++ b/src/metabase/events/activity_feed.clj
@@ -6,6 +6,7 @@
             [metabase.events :as events]
             (metabase.models [activity :refer [Activity]]
                              [dashboard :refer [Dashboard]]
+                             [database :refer [Database]]
                              [session :refer [Session]])))
 
 
@@ -79,17 +80,20 @@
       :dashboard-remove-cards (record-activity topic object add-remove-card-details))))
 
 (defn- process-database-activity [topic object]
-  (let [database-details-fn (fn [obj] (-> obj
+  (let [database            (db/sel :one Database :id (events/object->model-id topic object))
+        database-details-fn (fn [obj] (-> obj
                                           (assoc :status "started")
                                           (dissoc :database_id :custom_id)))
-        database-table-fn (fn [obj] {:database-id (events/object->model-id topic obj)})]
-    (case topic
-      :database-sync-begin (record-activity :database-sync object database-details-fn database-table-fn)
-      :database-sync-end   (let [{activity-id :id} (db/sel :one Activity :custom_id (:custom_id object))]
-                             (db/upd Activity activity-id
-                               :details (-> object
-                                            (assoc :status "completed")
-                                            (dissoc :database_id :custom_id)))))))
+        database-table-fn   (fn [obj] {:database-id (events/object->model-id topic obj)})]
+    ;; NOTE: we are skipping any handling of activity for sample databases
+    (when (= false (:is_sample database))
+      (case topic
+        :database-sync-begin (record-activity :database-sync object database-details-fn database-table-fn)
+        :database-sync-end   (let [{activity-id :id} (db/sel :one Activity :custom_id (:custom_id object))]
+                               (db/upd Activity activity-id
+                                 :details (-> object
+                                              (assoc :status "completed")
+                                              (dissoc :database_id :custom_id))))))))
 
 (defn- process-user-activity [topic object]
   ;; we only care about login activity when its the users first session (a.k.a. new user!)
diff --git a/src/metabase/sample_data.clj b/src/metabase/sample_data.clj
index 1289c95b53439c619c85f4dc0d99dd52fb198b24..d1ea45e7636e78b0b6db223140bf65cf2b52869a 100644
--- a/src/metabase/sample_data.clj
+++ b/src/metabase/sample_data.clj
@@ -32,6 +32,6 @@
         (log/error (format "Failed to load sample dataset: %s" (.getMessage e)))))))
 
 (defn update-sample-dataset-if-needed! []
-  ;; TODO - fill this out
-  ;; NOTE: we don't want to sync the sample dataset unless it has actually changed
-  nil)
+  ;; TODO - it would be a bit nicer if we skipped this when the data hasn't changed
+  (when-let [db (db/sel :one Database :is_sample true)]
+    (driver/sync-database! db)))