SQL server中如何更改排序規則

時間 2021-10-14 22:25:42

1樓:普實軟體

開始之前,先確認排序規則(或大小寫是否敏感)

--檢視伺服器排序規則(安裝時指定的排序規則)

select serverproperty('collation') as servercollation

,databasepropertyex('tempdb','collation') as tempdbcollation

,databasepropertyex(db_name(),'collation') as currentdbcollation

--檢視資料庫排序規則

select name, collation_name from sys.databases

--當前資料庫是否大小寫敏感

select case when n'a'=n'a' then n'不敏感' else n'敏感' end

此環境例項中:

伺服器排序規則為 chinese_prc_bin

當前資料庫排序規則為 chinese_prc_ci_as

若當前資料庫建立的所有物件和執行指令碼時,如果用到了變數、臨時物件等,大小寫不一致則出現問題。二進位制(_bin)排序規則是區分大小寫的。

安裝例項時指定的排序規則,就是 master 資料庫的排序規則,同時 model 和 msdb 的排序規則也保持一致,而 tempdb 和使用者資料庫的排序規則都是參照 model 資料庫一樣的。

系統資料庫是不能直接更改排序規則的,因此只能重建系統資料庫,且讓系統資料庫的排序規則都一致。

重建例項排序規則和系統資料庫排序規則:

1、備份系統資料庫!必要的,失敗了或者以後要使用當前環境時,還可以回退!

2、記住所有資料庫及檔案路徑,保持到 excel 中。如果記得住所有資料庫位置的話就不用了。

select db_name(database_id) as name,physical_name from sys.master_files

3、匯出伺服器配置(sp_configure)到 excel。因為重建系統資料庫後配置會被初始化。

4、匯出賬號資訊到 txt。資料庫重建,賬戶資訊都會丟失,除了備份也要單獨備份賬號。(sql server 中登入賬號與資料庫使用者遷移)

5、匯出連結伺服器生產指令碼到 txt ,如果有的話。

6、匯出**作業到 txt 。

7、(如果還有其他配置,如稽核、郵件配置、策略等,都儲存出來,後續再重建)

8、分離所有使用者資料庫。

select 'alter database ['+name+'] set  single_user with rollback immediate'+char(10)+'go'+char(10)

+'exec master.dbo.sp_detach_db @dbname = n'''+name+''''+char(10)+'go'+char(10)

from sys.databases where name not in('master','model','msdb','tempdb')

9、停止所有資料庫相關服務。

10、重建資料庫並制定新的排序規則。開啟命令列,進入安裝目錄。

cd d:\software\en_sql_server_2008_r2_enterprise_x86_x64_ia64_***_520517

setup /quiet /action=rebuilddatabase /instancename=mssqlserver /sqlsysadminaccounts=伺服器賬號 /sapwd=密碼 /sqlcollation=chinese_prc_ci_as

11、啟動 sql server 引擎服務,其他暫不啟動。

12、建立登入賬戶(之前匯出的指令碼)

13、附加所有使用者資料庫。

14、建立**作業、連結伺服器、更配置等!

完成!~

如果重建系統資料庫後,還原 master 資料庫,那麼伺服器排序規則和 master 資料庫排序規則都還原和以前一樣,所以不能還原,除非恢復到以前的環境。

如果還原 msdb 或 model ,該資料庫排序規則也會還原,所以系統資料庫備份都不要還原,重建系統資料庫之後只能重新配置。

更改使用者資料庫排序規則

alter database test collate chinese_prc_ci_as

更改資料庫排序規則時,需要更改下列內容:

>>  將系統表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改為使用新的排序規則。

>> 將儲存過程和使用者定義函式的所有現有 char、varchar、text、nchar、nvarchar 或 ntext 引數和標量返回值更改為使用新的排序規則。

>> 將 char、varchar、text、nchar、nvarchar 或 ntext 系統資料型別和基於這些系統資料型別的所有使用者定義的資料型別更改為使用新的預設排序規則。

對於資料庫內欄位定義的排序規則,參考下面的 設定或更改列排序規則。

設定或更改列排序規則:

--示例

create table dbo.mytable(

primarykey   int primary key,

charcol      varchar(10) collate french_ci_as not null

);goalter table dbo.mytable alter column charcol varchar(10) collate latin1_general_ci_as not null;

go如果下列其中之一當前正在引用一個列,則無法更改該列的排序規則:

>>  計算列

>>  索引

>>  自動生成或由 create statistics 語句生成的分發統計資訊

>>  check 約束

>>  foreign key 約束

2樓:匿名使用者

在sql查詢語句的order by後面加上desc 是降序排列,如果不寫預設是升序。吧降序改升序把desc 換成asc.

中如何更改文字高寬比例,word中如何 更改文字 高寬比例

可以通過字元縮放來實現,例如上面效果的設定方法 一 增加文字寬度 1 選中需要設定的文字 2 單擊開始選項卡右下角如圖所示的按鈕 3 彈出字型對話方塊,選擇字元間距,在縮放處lwty200 即可,如圖所示。二 減小文字寬度 重複上面的操作,只是在縮放處輸入50 即可。 1 寬度用格式中的字型中的字元...

如何更改sql中某列的值,如何更改SQL中某列的值

通過update方法實現。sql update table tablename t set filename 值1 where t.name 條件 解釋 更改某列,說明有條件,所有必須通過 where 條件語句定位到列。定位成功後,通過set方法給固定欄位賦值即可。上面sql語句的意思 更改tabl...

sqlserver中如何快速批量刪除表裡的百萬條記錄

如果是清空表的話可以用truncate table tbname 如果刪除指定資料的話還是用迴圈delete top吧 如果是該表的資料全部刪除的話可以按szm341說的直接用truncate table 清空表,如果只是部分刪除,而且保留的資料比較少的話可以先將保留的資料匯出或存到一個臨時表中,然...