安装数据库的时候不选好,要再修改SQLServer数据库实例的字符集,真是一件头疼的事情。首先得打消敲几个命令就能修改实例字符集的念头,因为目前看起来好像是不可能的
根据网友的评论,可以通过安装程序重新生成系统数据库的方法,来修改对应实例的字符集,如下
1 2 3 |
D:/Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=Administrators /SAPWD=XXXX /SQLCOLLATION=Chinese_PRC_CI_AS |
此处我们照样操作,只是省略了/QUIET选项,因为我想看看到底数据库干了那些事情,当时好像也看不到什么内容
1 2 3 4 |
C:\Users\Administrator\Desktop>SQLEXPR64.exe /ACTION=REBUILDDATABASE /INSTANCENAME=SQLEXPRESS /SQLSYSADMINACCOUNTS=Administrator /SAPWD=Aa12345678 /SQLCOLLATION =Chinese_PRC_CI_AS |
重新生成数据库后,进去查看一下当前的字符集:
1 2 3 |
SELECT SERVERPROPERTY(N'collation') |
按理说应该显示Chinese_PRC_CI_AS
接着就应该恢复我们的数据了,由于重新生成了系统库,以前的dd都没有了,所以只能attach不能restore了,这里只记录一下我操作成功的方法:
1 2 3 4 5 6 |
use master go sp_attach_db 'mydb','c:\Data\mydb.mdf','c:\Data\mydb.ldf' go |
MSDN和众网友还介绍了另一种方法,
1 2 3 |
CREATE DATABASE database_name ON <filespec>[,...n] FOR {{ATTACH}|{ATTACH_REBUILD_LOG} |
但在执行时总是提示错误,所以弃而不用
注:修改某数据库的字符集,可以如下操作
alter database DBName collate Chinese_PRC_CI_AS
查询当前有哪些数据库
SELECT Name FROM Master..SysDatabases