更改SQL Server实例默认字符集
需求
安装数据库时,将字符集安装成了“SQL_Latin1_General_CP1_CI_AS”,
现在需要将其更改为“Chinese_PRC_CI_AS”。
60_3710_e70072657290cff.jpg[设为封面] [删除]
方法
重新生成系统
数据库 ,然后还原配置信息。
局限
重新生成 master、model、msdb 和 tempdb 系统
数据库时,将删除这些
数据库,
然后在其原位置重新创建。 如果在重新生成语句中指定了新排序规则,则将使用该排序规则
设置创建系统
数据库。 用户对这些
数据库所做的所有修改都会丢失。 例如,您在 master
数据库中的用户定义对象、在 msdb 中的
预定作业或在 model
数据库中对默认
数据库设置的更改都会丢失。
前期准备
在重新生成系统
数据库之前执行下列任务,以确保可以将系统
数据库还原至它们的当前设置。
记录所有
服务器范围的配置值。
SELECT * FROM sys.configurations;
记录所有应用到 SQL Server 实例和当前排序规则的 Service Pack 和修补程序。
重新生成系统
数据库后必须重新应用这些更新。
SELECT
SERVERPROPERTY('ProductVersion ') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
SERVERPROPERTY('Collation') AS Collation;
记录系统
数据库的所有数据文件和日志文件的当前位置。 重新生成系统
数据库会将所有系统
数据库安装到其原位置。 如果已将系统
数据库数据文件或日志文件移动到其他位置,
则必须再次移动这些文件。
SELECT name, physical_name AS current_file_location
FROM sys.master_files
WHERE database_id IN (DB_ID('master'), DB_ID('model'), DB_ID('msdb'), DB_ID('tempdb'));
如果将 SQL Server 的实例配置为复制分发
服务器,请找到该分发
数据库的当前备份。
确保您有重新生成系统
数据库的相应权限。 必须是 sysadmin 固定
服务器角色的成员才能
执行此操作。 有关详细信息,请参阅
服务器级别角色。
http://technet.microsoft.com/zh-cn/ms188659将原
数据库的帐号、JOB等与系统
数据库相关的信息全部备份起来(可以先生成相应的脚本),
分离掉所有用户库。
重新生成系统
数据库运行下面的命令就可重建
数据库(根据您的系统,需要做相应的修改 ;D:/Setup
是
数据库安装文件所在的路径)
D:/Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=Administrators /SAPWD=XXXX /SQLCOLLATION=Chinese_PRC_CI_AS
参数说明:
参数名称
说明
/QUIET 或 /Q
指定在没有任何用户界面的情况下运行安装程序。
/ACTION=REBUILDDATABASE
指定安装程序将重新创建系统
数据库。
/INSTANCENAME=InstanceName
SQL Server 实例的名称。 对于默认实例,请输入 MSSQLSERVER。
/SQLSYSADMINACCOUNTS=accounts
指定要添加到 sysadmin 固定
服务器角色中的 Windows 组或单个帐户。 指定多个帐户时,
请用空格将帐户隔开。 例如,请输入 BUILTINAdministrators MyDomainMyUser。
当您在帐户名称内指定包含空格的帐户时,用双引号将该帐户引起来。 例如,输入 NT AUTHORITYSYSTEM。
[ /SAPWD=StrongPass
word ]
指定 SQL Server sa 帐户的密码。 如果实例使用混合身份验证(SQL Server 和 Windows
身份验证)模式,则此参数是必需的。
安全说明
sa 帐户是一个广为人知的 SQL Server 帐户,并且经常成为恶意用户的攻击目标。
因此,为 sa 登录名使用强密码非常重要。
不要为 Windows 身份验证模式指定此参数。
[ /SQLCOLLATION=CollationName ]
指定新
服务器级排序规则。 此参数可选。 如果没有指定,则使用
服务器的当前排序规则。
重要提示
更改
服务器级排序规则不会更改现有用户
数据库的排序规则。 默认情况下,所有新创建的
用户
数据库都将使用新排序规则。
有关详细信息,请参阅设置或更改
服务器排序规则。
http://technet.microsoft.com/zh-cn/ms179254安装程序完成后,将显示如下信息,(你也可以检查 Summary.txt 日志文件以验证
重新生成过程是否成功完成。 此文件位于 C:Program FilesMicrosoft SQL Server100Setup BootstrapLogs)。
60_3710_4ecc099da52d525.jpg[设为封面] [删除]
检查和修复
系统
数据库恢复完成后,先检查一下字符集是否按要求恢复了:
60_3710_da883f53f915a9a.jpg[设为封面] [删除]
字符集更改完成后,我们还需要附加上用户
数据库,将原来的帐号和JOB等信息以及配置信息做修复,
还需要修复孤立帐号等。
附加说明
如果您只需要更改某个用户
数据库的字符集,非常简单:
--修改
数据库字符集
alter database DBName collate Chinese_PRC_CI_AS
注意
以上恢复是在SQLServer2008R2版本上面完成的,不同的版本您可能需要做一些修改,
另外此方法存在一定的风险(主要是在重建
数据库阶段),产品环境最好还是重新安装
数据库。