1. 程式人生 > >更改SQLServer實例默認字符集

更改SQLServer實例默認字符集

字符集 過程 ref 重新安裝 div 文件的 ever 可選 如果

更改SQLServer實例默認字符集

需求

安裝數據庫時,將字符集安裝成了“SQL_Latin1_General_CP1_CI_AS”,現在需要將其更改為“Chinese_PRC_CI_AS”。

技術分享

方法

重新生成系統數據庫 ,然後還原配置信息。

局限

重新生成 master、model、msdb 和 tempdb 系統數據庫時,將刪除這些數據庫,然後在其原位置重新創建。 如果在重新生成語句中指定了新排序規則,則將使用該排序規則設置創建系統數據庫。 用戶對這些數據庫所做的所有修改都會丟失。 例如,您在 master 數據庫中的用戶定義對象、在 msdb 中的預定作業或在 model 數據庫中對默認數據庫設置的更改都會丟失。

前期準備

在重新生成系統數據庫之前執行下列任務,以確保可以將系統數據庫還原至它們的當前設置。

  1. 記錄所有服務器範圍的配置值。 SELECT * FROM sys.configurations;
  2. 記錄所有應用到 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;
  1. 記錄系統數據庫的所有數據文件和日誌文件的當前位置。 重新生成系統數據庫會將所有系統數據庫安裝到其原位置。 如果已將系統數據庫數據文件或日誌文件移動到其他位置,則必須再次移動這些文件。 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‘));
  1. 如果將 SQL Server 的實例配置為復制分發服務器,請找到該分發數據庫的當前備份。
  2. 確保您有重新生成系統數據庫的相應權限。 必須是 sysadmin 固定服務器角色的成員才能執行此操作。 有關詳細信息,請參閱服務器級別角色
  1. 將原數據庫的帳號、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版本上面完成的,不同的版本您可能需要做一些修改,另外此方法存在一定的風險(主要是在重建數據庫階段),產品環境

最好還是重新安裝數據庫。

更改SQLServer實例默認字符集