Sql-Server

‘show variables LIKE ‘%_database’ 的含義

  • October 24, 2014

儘管我是數據庫管理的新手,但我被指派將我們的 crm 從 mysql 遷移到 mssql。我已經遇到了一個我不理解的查詢並且它無法在 sql server 中執行的地步。 show variables LIKE '%_database'

以下是它的程式碼:

public static function checkDbUTF8Support($conn) {
   global $db_type;
   if($db_type == 'pgsql')
       return true;
   $dbvarRS = $conn->Execute("show variables like '%_database' ");
   $db_character_set = null;
   $db_collation_type = null;
   while(!$dbvarRS->EOF) {
       $arr = $dbvarRS->FetchRow();
       $arr = array_change_key_case($arr);
       switch($arr['variable_name']) {
           case 'character_set_database' : $db_character_set = $arr['value']; break;
           case 'collation_database'     : $db_collation_type = $arr['value']; break;
       }
       // If we have all the required information break the loop. 
       if($db_character_set != null && $db_collation_type != null) break;
   }
   return (stristr($db_character_set, 'utf8') && stristr($db_collation_type, 'utf8'));
}
}

有人可以幫助我解釋和可能的解決方案

Show Variables 不是 ANSI SQL,它是 MySQL 特定的,因此它不會跨數據庫提供程序執行。

通讀該程式碼,它看起來像是在嘗試確定數據庫提供程序是否支持 UTF8。

如果你用Google搜尋,這Show Variables是一個 MySQL 命令,它返回有關目前數據庫的資訊。

我認為您將不得不用不同的程式碼替換整個部分,以確定正在使用的數據庫是否支持 UTF8,我懷疑這取決於排序規則。

您可以在 sys.xml 中找到此資訊。表。

然而,Google搜尋 MSSQL Server 和 UTF8 似乎表明 MS 並不明確支持 UTF8。

這是您的問題“什麼是顯示變數”的答案,而不是您的問題“我的應用程序如何執行查詢以確定數據庫中的 UTF8 支持?”的解決方案。

高溫高壓

引用自:https://dba.stackexchange.com/questions/81006