diff --git a/.gitlab/ci/static-analysis.gitlab-ci.yml b/.gitlab/ci/static-analysis.gitlab-ci.yml
index 79f578d09dcbb84732e48883b60f0b1314b703fb..85df68e903065e2f3096b789187dc636fc45d27f 100644
--- a/.gitlab/ci/static-analysis.gitlab-ci.yml
+++ b/.gitlab/ci/static-analysis.gitlab-ci.yml
@@ -24,11 +24,8 @@ static-analysis:
   extends:
     - .static-analysis-base
     - .static-analysis:rules:ee-and-foss
-    - .use-pg12
   stage: test
   parallel: 4
-  variables:
-    SETUP_DB: "true"
   script:
     - run_timed_command "retry yarn install --frozen-lockfile"
     - scripts/static-analysis
@@ -38,6 +35,17 @@ static-analysis:
     paths:
       - tmp/feature_flags/
 
+static-analysis-with-database:
+  extends:
+    - .static-analysis-base
+    - .static-analysis:rules:ee-and-foss
+    - .use-pg12
+  stage: test
+  script:
+    - bundle exec rake lint:static_verification_with_database
+  variables:
+    SETUP_DB: "true"
+
 static-analysis as-if-foss:
   extends:
     - static-analysis
diff --git a/bin/rails b/bin/rails
index 5badb2fde0cb72bbb3cba8436721048dfd7e58dd..073966023774750c90fe9c89910c769a92da604b 100755
--- a/bin/rails
+++ b/bin/rails
@@ -1,9 +1,4 @@
 #!/usr/bin/env ruby
-begin
-  load File.expand_path('../spring', __FILE__)
-rescue LoadError => e
-  raise unless e.message.include?('spring')
-end
 APP_PATH = File.expand_path('../config/application', __dir__)
 require_relative '../config/boot'
 require 'rails/commands'
diff --git a/bin/rake b/bin/rake
index d87d5f578104597c1d1b951b55942e37f8af1277..17240489f64832c9ce080088e27780d3dc3ee29a 100755
--- a/bin/rake
+++ b/bin/rake
@@ -1,9 +1,4 @@
 #!/usr/bin/env ruby
-begin
-  load File.expand_path('../spring', __FILE__)
-rescue LoadError => e
-  raise unless e.message.include?('spring')
-end
 require_relative '../config/boot'
 require 'rake'
 Rake.application.run
diff --git a/lib/gitlab/popen/runner.rb b/lib/gitlab/popen/runner.rb
index 60c2082844c1e6363386da51001736f14763631e..cd9ad270cd80c2fde537007181ec33ac54719cca 100644
--- a/lib/gitlab/popen/runner.rb
+++ b/lib/gitlab/popen/runner.rb
@@ -31,7 +31,7 @@ def all_success?
       end
 
       def all_stderr_empty?
-        results.all? { |result| stderr_empty_ignoring_spring(result) }
+        results.all? { |result| result.stderr.empty? }
       end
 
       def failed_results
@@ -40,22 +40,9 @@ def failed_results
 
       def warned_results
         results.select do |result|
-          result.status.success? && !stderr_empty_ignoring_spring(result)
+          result.status.success? && !result.stderr.empty?
         end
       end
-
-      private
-
-      # NOTE: This is sometimes required instead of just calling `result.stderr.empty?`, if we
-      # want to ignore the spring "Running via Spring preloader..." output to STDERR.
-      # The `Spring.quiet=true` method which spring supports doesn't work, because it doesn't
-      # work to make it quiet when using spring binstubs (the STDERR is printed by `bin/spring`
-      # itself when first required, so there's no opportunity to set Spring.quiet=true).
-      # This should probably be opened as a bug against Spring, with a pull request to support a
-      # `SPRING_QUIET` env var as well.
-      def stderr_empty_ignoring_spring(result)
-        result.stderr.empty? || result.stderr =~ /\ARunning via Spring preloader in process [0-9]+\Z/
-      end
     end
   end
 end
diff --git a/lib/tasks/lint.rake b/lib/tasks/lint.rake
index 7d1721f1df8d3a8f222a0fbc93065319c97c8dd7..62d31803f6ee52186c218602901a4e35be666dd1 100644
--- a/lib/tasks/lint.rake
+++ b/lib/tasks/lint.rake
@@ -12,6 +12,13 @@ unless Rails.env.production?
       dev:load
     ] do
       Gitlab::Utils::Override.verify!
+    end
+
+    desc "GitLab | Lint | Static verification with database"
+    task static_verification_with_database: %w[
+      lint:static_verification_env
+      dev:load
+    ] do
       Gitlab::Utils::DelegatorOverride.verify!
     end