【MSSQL】SQL SERVER导入中文乱码问题解决

news2024/12/22 19:40:47

公司最近承接了一个项目,甲方现使用旧版SiteServer框架(以下简称“SiteCMS”)作为门户网站,使用的数据源是SQL Server。

现在需要对SiteCMS进行升级,在升级时数据库和数据库结构也需要同时更新,其中数据库要求从现在Windows Server服务器的SQL SERVER迁移到CentOS的Docker版SQL SERVER中以便可以Docker化统一管理(这个别人家的管理模式就不作深究了)。

为了确保工作万无一失,需要将数据备份还原到本地环境进行预演(已经过用户授权)。但是导入到测试环境时却出现中文乱码的情况。如下图所示:

在这里插入图片描述

本地环境模拟的镜像是“mcr.microsoft.com/mssql/server:2017-latest”,这个镜像也将会在后面生产环境下使用。

在这里插入图片描述

先查询一下当前数据库的默认编码,如下图:

在这里插入图片描述

干过开发的都知道这个Latin1编码方式就是中文乱码的主要原因了。好了,现在问题也清晰了,就一句话“要怎样才能够在没有SQL SERVER管理器(Mac环境)的情况下修改Docker版SQL SERVER的编码规则呢?”,下面将详细讲讲这些走过的“弯路”。

按照网上的说法,首先先进入容器并切换到/opt/mssql/bin目录,如下所示:

yuanzhenhui@MacBook-Pro ~ % docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS        PORTS                    NAMES
6ce7e5e399ba   314918ddaedf   "/opt/mssql/bin/sqls…"   8 months ago   Up 12 hours   0.0.0.0:1433->1433/tcp   mssql
yuanzhenhui@MacBook-Pro ~ % docker exec -it 6ce7e5e399ba bash
root@6ce7e5e399ba:/# cd /opt/mssql/bin
root@6ce7e5e399ba:/opt/mssql/bin# ls
compress-dump.sh  crash-support-functions.sh  generate-sql-dump.sh  handle-crash.sh  mssql-conf  paldumper  sqlservr
root@6ce7e5e399ba:/opt/mssql/bin# ls -al
total 32280
drwxrwxr-x 2 root root     4096 Dec 17  2018 .
drwxrwxr-x 4 root root     4096 Dec 17  2018 ..
-rwxrwxr-x 1 root root      409 Dec 17  2018 compress-dump.sh
-rwxrwxr-x 1 root root    16447 Dec 17  2018 crash-support-functions.sh
-rwxrwxr-x 1 root root     1615 Dec 17  2018 generate-sql-dump.sh
-rwxrwxr-x 1 root root     1886 Dec 17  2018 handle-crash.sh
-rwxrwxr-x 1 root root     1294 Dec 17  2018 mssql-conf
-rwxrwxr-x 1 root root 31384736 Dec 17  2018 paldumper
-rwxrwxr-x 1 root root  1618456 Dec 17  2018 sqlservr
root@6ce7e5e399ba:

在该目录下有一个mssql-conf的可执行文件,然后通过“./mssql-conf set-collation”指令就能够设置你需要的编码,如下所示:

root@6ce7e5e399ba:/opt/mssql/bin# ./mssql-conf set-collation
Enter the collation: Chinese_PRC_CI_AS
Configuring SQL Server...

/opt/mssql/lib/mssql-conf/invokesqlservr.sh: line 13: sudo: command not found
root@6ce7e5e399ba:/opt/mssql/bin#

(⊙o⊙)…这里说我没有sudo执行不了?好吧,那就装个sudo吧。还好镜像是用Ubuntu操作系统为基础的,用apt-get就能够轻松安装。如下所示:

root@6ce7e5e399ba:/opt/mssql/bin# apt-get update
Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [99.8 kB]
Get:3 https://packages.microsoft.com/ubuntu/16.04/prod xenial InRelease [4010 B]
Get:4 https://packages.microsoft.com/ubuntu/16.04/prod xenial/main amd64 Packages [323 kB]     
Get:5 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [256 kB]              
Get:6 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [99.8 kB]      
Get:7 http://archive.ubuntu.com/ubuntu xenial-backports InRelease [97.4 kB]      
Get:8 http://archive.ubuntu.com/ubuntu xenial/universe Sources [9802 kB]
Get:9 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [2051 kB]
Get:10 http://security.ubuntu.com/ubuntu xenial-security/restricted amd64 Packages [15.9 kB]   
Get:11 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 Packages [984 kB]      
Get:12 http://security.ubuntu.com/ubuntu xenial-security/multiverse amd64 Packages [8820 B]    
Get:13 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages [1558 kB]                   
Get:14 http://archive.ubuntu.com/ubuntu xenial/restricted amd64 Packages [14.1 kB]             
Get:15 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages [9827 kB]               
Get:16 http://archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages [176 kB]              
Get:17 http://archive.ubuntu.com/ubuntu xenial-updates/universe Sources [548 kB]               
Get:18 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [2560 kB]           
Get:19 http://archive.ubuntu.com/ubuntu xenial-updates/restricted amd64 Packages [16.4 kB]     
Get:20 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [1544 kB]       
Get:21 http://archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages [26.2 kB]     
Get:22 http://archive.ubuntu.com/ubuntu xenial-backports/main amd64 Packages [10.9 kB]         
Get:23 http://archive.ubuntu.com/ubuntu xenial-backports/universe amd64 Packages [12.7 kB]     
Fetched 30.3 MB in 33s (908 kB/s)                                                              
Reading package lists... Done
root@6ce7e5e399ba:/opt/mssql/bin# apt-get install sudo 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sudo
0 upgraded, 1 newly installed, 0 to remove and 96 not upgraded.
Need to get 390 kB of archives.
After this operation, 1626 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 sudo amd64 1.8.16-0ubuntu1.10 [390 kB]
Fetched 390 kB in 1s (225 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package sudo.
(Reading database ... 8900 files and directories currently installed.)
Preparing to unpack .../sudo_1.8.16-0ubuntu1.10_amd64.deb ...
Unpacking sudo (1.8.16-0ubuntu1.10) ...
Setting up sudo (1.8.16-0ubuntu1.10) ...
root@6ce7e5e399ba:/opt/mssql/bin#

然后就又出现了另一个问题,如下图:

root@ff6113eba616:/opt/mssql/bin#sudo ./mssql-conf set-collation
Enter the collation: Chinese_PRC_CI_AS
Configuring SQL Server...

No passwd entry for user 'mssql'
root@ff6113eba616:

mssql用户没有密码?按照这个提示又去网上找了一圈,下面就按照Stack Overflow里面的解答来进行了操作,如下所示:

root@a4b1b86ad87c:/# useradd mssql
root@a4b1b86ad87c:/# mkdir -p /var/opt/mssql
root@a4b1b86ad87c:/# chmod -R 777 /var/opt/mssql
root@a4b1b86ad87c:/opt/mssql/bin# echo "Chinese_PRC_CI_AS" | /opt/mssql/bin/mssql-conf set-collation
Enter the collation: Configuring SQL Server...

2022-11-22 05:35:39.66 Server      Microsoft SQL Server 2017 (RTM-CU31) (KB5016884) - 14.0.3456.2 (X64) 
        Sep  2 2022 11:01:50 
        Copyright (C) 2017 Microsoft Corporation
        Enterprise Edition (64-bit) on Linux (Ubuntu 18.04.6 LTS)
2022-11-22 05:35:39.68 Server      UTC adjustment: 0:00
2022-11-22 05:35:39.68 Server      (c) Microsoft Corporation.
2022-11-22 05:35:39.68 Server      All rights reserved.
2022-11-22 05:35:39.69 Server      Server process ID is 392.
2022-11-22 05:35:39.69 Server      Logging SQL Server messages in file '/var/opt/mssql/log/errorlog'.
2022-11-22 05:35:39.70 Server      Registry startup parameters: 
         -d /var/opt/mssql/data/master.mdf
         -l /var/opt/mssql/data/mastlog.ldf
         -e /var/opt/mssql/log/errorlog
2022-11-22 05:35:39.71 Server      Command Line Startup Parameters:
         -q "Chinese_PRC_CI_AS"
2022-11-22 05:35:39.71 Server      Error: 17113, Severity: 16, State: 1.
2022-11-22 05:35:39.71 Server      Error 5(Access is denied.) occurred while opening file '/var/opt/mssql/data/master.mdf' to obtain configuration information at startup. An invalid startup option might have caused the error. Verify your startup options, and correct or remove them if necessary.

WTF,master.mdf文件没有访问权限?已经执行了chmod -R 777的情况下居然没有权限?到了这一步实在没有办法,既然这样就回归本源不搞全局算了。

接着我这边就删除了容器并重新运行,先创建一个名为SiteCMS的数据库,接着直接对数据库进行编码的设定,如下图:

在这里插入图片描述

再之后重新导入数据

在这里插入图片描述

导入数据之后一切正常,ε=(´ο`*)))唉早知道就不折腾了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

硬件顶配、数字先行,路特斯重塑「智能座舱」

诚然,在车联网的高度普及、5G技术的铺开以及汽车产业融合的大势下,传统单一驾驶与乘坐功能的汽车座舱正在被颠覆,更高级、更智能的“智能座舱”应运而生。 从行业发展态势来看,大屏多屏已经是智能汽车的基本操作,智能…

【网络安全】——逻辑漏洞之短信轰炸漏洞

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

程序的环境

文章目录[TOC](文章目录)前言一、程序环境分类二、翻译环境1.总体流程2.编译2.1预编译2.2编译2.3汇编3.链接三、运行环境总结前言 我们平时在编译器上编写代码,然后运行代码,最后得到程序的运行结果。这让我们不经好奇:程序在电脑中到底经过…

Java常用设计模式

前言 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF)的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模…

物联网漏洞利用整体情况

物联网 威胁分析漏洞篇物联网威胁分析—漏洞篇 引言 本章将从漏洞利用角度对物联网威胁进行分析。首先,我们分析了 NVD和 Exploit-DB中的物联网 年度漏洞及利用 1 变化趋势;之后统计了绿盟威胁捕获系统捕获到的物联网漏洞利用的整体情况;最…

【算法笔记(五)】排序算法

算法笔记(五) 排序算法算法笔记(五)前言一、冒泡排序1.什么是冒泡排序2.实际需求3.代码实现二、选择排序1.什么是选择排序2.需求规则三.插入排序1.了解插入排序2.需求规则3.代码实现四.希尔排序1.什么是希尔排序2.需求规则3.代码实现五.快速排序1.什么是快速排序2.需求规则3.代…

静态代理和动态代理

静态代理和动态代理代理模式代理模式的主要优缺点:优点:缺点:代理模式的编写要点静态代理实现步骤静态代理方式的弊端动态代理:动态代理的实现步骤:代理模式 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的…

Javascript 基础知识学习

Javascript 基础知识学习 参考自:https://www.w3cschool.cn/javascript/ javascript 简介 JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。 JavaScri…

计算流体力学的基本方法简介(有限差分法、有限元法、有限体积法)

1、有限差分法: 原理,用差商代替微商; 优缺点: 2、有限元方法: 有限元剖分方法: 特点: 3、有限体积法: 两种方式,格心格式和格点格式: 特点:

基于html的美食网站——速水果介绍8页(HTML+CSS+JavaScript) 带论文

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 家精彩专栏推荐 美食网页介绍 | 甜品蛋糕 | 地方美食小吃文化 | 餐饮文化 | 等网站的设计与制作 | 美食主题网站 | HTML期末大学生网页设计作业 HTML&…

SpringCloud全系列知识(1)——初识微服务和注册中心

SpringCloud(微服务)相关笔记 一 基础框架图 1.微服务技术栈 2.技术栈分类 二 认识微服务 1.单体架构 将业务功能集中在一个项目中,打成一个包部署。 优点:架构简单,部署成本低。 缺点:耦合度高 2.分布式架构 根据业务功能…

最具影响力的15颗国外开放数据气象卫星介绍

1.热带降雨测量任务(TRMM) TRMM 是 NASA 和日本宇宙航空研究开发机构 (以前称日本国家空间发展署) 的合作项目,是 NASA 地球科学计划中的航天任务。日本提供运载火箭和测雨雷达,而由 NASA 提供卫星、4台仪器和卫星运行系统。 TRMM 卫星是三轴稳定的&…

深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)

需要源码和环境搭建请点赞关注收藏后评论区留下QQ~~~ 一、Q-Learning算法 Q-Learning算法中动作值函数Q的更新方向是最优动作值函数q,而与Agent所遵循的行为策略无关,在评估动作值函数Q时,更新目标为最优动作值函数q的直接近似,故…

深入理解java虚拟机:虚拟机类加载机制(2)

文章目录3.类加载器3.1 类与类加载器3.2 双亲委派模型3.3 破坏双亲委派模型3.类加载器 虚拟机设计团队把类加载阶段中的通过一个类的全限定名来获取描述此类的二进制字节流这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个…

【密码学篇】数字签名基础知识(无保密性)

【密码学篇】数字签名基础知识(无保密性) 数字签名主要用于确认数据的完整性、签名者身份的真实性和签名行为的不可否认性等。—【蘇小沐】 文章目录【密码学篇】数字签名基础知识(无保密性)1.数字签名定义2.数字签名原理3.数字签…

Apache-DBUtils实现CRUD操作

Apache-DBUtils实现CRUD操作 每博一文案 有人说,不要轻易去伤害任何一个人,因为你会因此而受伤。欠的债,躲不掉,总是要还的。 要知道,哪些能被你欺骗的人,都是无条件相信你的人,因为心里有你&a…

【LeetCode-中等】240. 搜索二维矩阵 II(详解)

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/…

ROS之话题通信自定义msg

文章目录背景自定义msg例子1.定义msg文件2.编辑配置文件3.编译话题通信自定义msg调用A(C)0.vscode 配置1.发布方2.订阅方3.配置 CMakeLists.txt4.执行背景 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据…

【软考软件评测师】第三十三章 数据库系统应用

【软考软件评测师】第三十三章 数据库系统应用 【软考软件评测师】第三十三章 数据库系统应用【软考软件评测师】第三十三章 数据库系统应用第一部分 知识点集锦1.关系数据库候选码2.自然连接3.元祖关系1)1对多关系2)多对多关系3)复合属性4&a…

Centos8界面语言怎么设置? Centos用户界面语言的设置方法

Centos8怎么给用户设置界面语言?想要设置界面语言,该怎么设置呢?下面我们就来看看详细的教程。 1、Gnome桌面环境下,在桌面空白处右键选择【设置】。 2、在【设置】中点【详细信息】。 3、之后点【用户】。 4、首先单击选中要设置…