From: Jakub Vrana Date: Wed, 26 Feb 2025 12:59:47 +0000 (+0100) Subject: MS SQL: Set identity_insert in export X-Git-Tag: v5.0.0~130 X-Git-Url: https://git.joonet.de/?a=commitdiff_plain;h=76cc7c66143b9ba860575d0e6fe8c0896ea4510f;p=adminer.git MS SQL: Set identity_insert in export --- 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"; + } } }