diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index b7bd3c8019c..fa48db048c4 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -14,6 +14,7 @@ var/list/admin_verbs_default = list(
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/client/proc/reload_admins,
+ /client/proc/reestablish_db_connection,/*reattempt a connection to the database*/
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel /*admin-pm list*/
)
@@ -184,7 +185,8 @@ var/list/admin_verbs_hideable = list(
/client/proc/cmd_debug_del_all,
/client/proc/enable_debug_verbs,
/proc/possess,
- /proc/release
+ /proc/release,
+ /client/proc/reload_admins
)
/client/proc/add_admin_verbs()
diff --git a/code/modules/admin/verbs/reestablish_db_connection.dm b/code/modules/admin/verbs/reestablish_db_connection.dm
new file mode 100644
index 00000000000..146b8481a19
--- /dev/null
+++ b/code/modules/admin/verbs/reestablish_db_connection.dm
@@ -0,0 +1,31 @@
+/client/proc/reestablish_db_connection()
+ set category = "Special Verbs"
+ set name = "Reestablish DB Connection"
+ if (!config.sql_enabled)
+ usr << "The Database is not enabled!"
+ return
+
+ if (dbcon && dbcon.IsConnected())
+ if (!check_rights(R_DEBUG,0))
+ alert("The database is already connected! (Only those with +debug can force a reconnection)", "The database is already connected!")
+ return
+
+ var/reconnect = alert("The database is already connected! If you *KNOW* that this is incorrect, you can force a reconnection", "The database is already connected!", "Force Reconnect", "Cancel")
+ if (reconnect != "Force Reconnect")
+ return
+
+ dbcon.Disconnect()
+ failed_db_connections = 0
+ log_admin("[key_name(usr)] has forced the database to disconnect")
+ message_admins("[key_name_admin(usr)] has forced the database to disconnect!")
+ feedback_add_details("admin_verb","FRDB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+ log_admin("[key_name(usr)] is attempting to re-established the DB Connection")
+ message_admins("[key_name_admin(usr)] is attempting to re-established the DB Connection")
+ feedback_add_details("admin_verb","RDB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+ failed_db_connections = 0
+ if (!establish_db_connection())
+ message_admins("Database connection failed: " + dbcon.ErrorMsg())
+ else
+ message_admins("Database connection re-established")
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 594e9f0bde5..fbfeef2b539 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -748,6 +748,7 @@
#include "code\modules\admin\verbs\possess.dm"
#include "code\modules\admin\verbs\pray.dm"
#include "code\modules\admin\verbs\randomverbs.dm"
+#include "code\modules\admin\verbs\reestablish_db_connection.dm"
#include "code\modules\admin\verbs\ticklag.dm"
#include "code\modules\admin\verbs\tripAI.dm"
#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm"