返回列表 上一主題 發帖

[分享] 修改SQL定序

[分享] 修改SQL定序

本帖最後由 傘蜥蜴 於 2011-11-28 13:34 編輯

請使用如下的 ALTER DATABASE 陳述式來變更:
ALTER DATABASE 我的資料庫
COLLATE SQL_Latin1_General_Cp850_BIN;
上述的指令是針對單一資料庫所做的設定,若您欲將整個 SQL Server 的定序全部改成 SQL_Latin1_General_Cp850_BIN,則可依照下列步驟進行:
先備份資料庫。
使用工具匯出所有資料(例如,使用 bcp.exe 這類工具來大量匯出資料)。
卸除所有使用者資料庫。
在命令提示字元模式中,於 SQL Server 2005 光碟機所在目錄,使用 setup.exe 命令搭配SQLCOLLATION 參數來重建 master 系統資料庫,以指定新的定序。例如,下面的程式碼會重建 SQL Server 預設執行個體 MSSQLSERVER 的 master 系統資料庫,並將定序改為SQL_Latin1_General_Cp850_BIN:

setup.exe INSTANCENAME=MSSQLSERVER REINSTALL=SQL_Engine REBUILDDATABASE=1 SQLCOLLATION=SQL_Latin1_General_Cp850_BIN

其中的 INSTANCENAME 係指定您的 SQL Server 執行個體名稱

重新建立所有使用者資料庫以及其內含的資料庫物件。
匯入先前匯出的所有資料。


資料來源:http://cp0501.blogspot.com/2007/11/sql-server.html

更改資料庫的定序名稱
之前在查詢中文資料時,都是直接使用下列的語法

select * from tablename where fieldname like '%中文%'

但是今天在查資料時卻查不出任何東西,而且資料欄位中確實有"中文"的字樣,
查了一下,才發現只要在查詢的資料前加個N就可以了,語法如下 :

select * from tablename where fieldname like N'%中文%'

而這主要是因為資料庫的定序名稱所引起,
通常我們在建立資料庫時,定序名稱都是使用"伺服器預設值",
所以也很少去注意它.

雖然說只要查詢語法改一下就可以了,
但是為了以後維護上的方便,
所以打算將資料庫的定序名稱改成"Chinese_Taiwan_Stroke_CI_AS",
可是,從SQL Server Enterprise Manager並不能直接去做修改,
所以要下語法去異動,
而語法如下 :

ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE DatabaseName COLLATE Chinese_Taiwan_Stroke_CI_AS
ALTER DATABASE DatabaseName SET MULTI_USER WITH ROLLBACK IMMEDIATE

因為在改定序名稱時,必須先鎖定資料庫,
所以第一行要先將資料庫設定為SINGLE_USER,每次只能一個使用者存取資料庫,
然後再修改定序名稱,
修改完後再將資料庫改回 MULTI_USER 即可,
另外要執行這些指令值須先將所在的資料庫切換到master下.


資料來源:http://cp0501.blogspot.com/2007/11/sql-server.html

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題