需求
安裝數據庫時,將字符集安裝成了“SQL_Latin1_General_CP1_CI_AS”,現在需要將其更改為“Chinese_PRC_CI_AS”。
方法
重新生成系統數據庫 ,然后還原配置信息。
局限
重新生成 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 固定服務器角色的成員才能執行此操作。 有關詳細信息,請參閱服務器級別角色。
- 將原數據庫的帳號、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 組或單個帳戶。 指定多個帳戶時,請用空格將帳戶隔開。 例如,請輸入 BUILTIN\Administrators MyDomain\MyUser。 當您在帳戶名稱內指定包含空格的帳戶時,用雙引號將該帳戶引起來。 例如,輸入 NT AUTHORITY\SYSTEM。 |
[ /SAPWD=StrongPassword ] |
指定 SQL Server sa 帳戶的密碼。 如果實例使用混合身份驗證(SQL Server 和 Windows 身份驗證)模式,則此參數是必需的。 安全說明 sa 帳戶是一個廣為人知的 SQL Server 帳戶,並且經常成為惡意用戶的攻擊目標。 因此,為 sa 登錄名使用強密碼非常重要。 不要為 Windows 身份驗證模式指定此參數。 |
[ /SQLCOLLATION=CollationName ] |
指定新服務器級排序規則。 此參數可選。 如果沒有指定,則使用服務器的當前排序規則。 重要提示 更改服務器級排序規則不會更改現有用戶數據庫的排序規則。 默認情況下,所有新創建的用戶數據庫都將使用新排序規則。 有關詳細信息,請參閱設置或更改服務器排序規則。 |
安裝程序完成后,將顯示如下信息,(你也可以檢查 Summary.txt 日志文件以驗證重新生成過程是否成功完成。 此文件位於 C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Logs)。
檢查和修復
系統數據庫恢復完成后,先檢查一下字符集是否按要求恢復了:
字符集更改完成后,我們還需要附加上用戶數據庫,將原來的帳號和JOB等信息以及配置信息做修復,還需要修復孤立帳號等。
附加說明
如果您只需要更改某個用戶數據庫的字符集,非常簡單:
--修改數據庫字符集
alter database DBName collate Chinese_PRC_CI_AS
注意
以上恢復是在SQLServer2008R2版本上面完成的,不同的版本您可能需要做一些修改,另外此方法存在一定的風險(主要是在重建數據庫階段),產品環境
最好還是重新安裝數據庫。