From 76cc7c66143b9ba860575d0e6fe8c0896ea4510f Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Wed, 26 Feb 2025 13:59:47 +0100 Subject: [PATCH] MS SQL: Set identity_insert in export --- adminer/include/adminer.inc.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 645e71c8..a7d8f8d1 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -825,11 +825,21 @@ class Adminer { if ($style) { $max_packet = ($jush == "sqlite" ? 0 : 1048576); // default, minimum is 1024 $fields = array(); + $identity_insert = false; if ($_POST["format"] == "sql") { if ($style == "TRUNCATE+INSERT") { echo truncate_sql($table) . ";\n"; } $fields = fields($table); + if ($jush == "mssql") { + foreach ($fields as $field) { + if ($field["auto_increment"]) { + echo "SET IDENTITY_INSERT " . table($table) . " ON;\n"; + $identity_insert = true; + break; + } + } + } } $result = $connection->query($query, 1); // 1 - MYSQLI_USE_RESULT //! enum and set as numbers if ($result) { @@ -892,6 +902,9 @@ class Adminer { } elseif ($_POST["format"] == "sql") { echo "-- " . str_replace("\n", " ", $connection->error) . "\n"; } + if ($identity_insert) { + echo "SET IDENTITY_INSERT " . table($table) . " OFF;\n"; + } } }