自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server數(shù)據(jù)庫之 “混合排序規(guī)則環(huán)境”的描述

數(shù)據(jù)庫 SQL Server
以下的文章主要描述的是SQL Server數(shù)據(jù)庫之 “混合排序規(guī)則環(huán)境”以及對其實際操作步驟中值得我們大家注意的事項。

此文章主要講述的是SQL Server數(shù)據(jù)庫之 “混合排序規(guī)則環(huán)境”,在實際操作中你是否遇到過混合排序規(guī)則環(huán)境這種情況,如果你對其實際操作或是其相關(guān)的實際應(yīng)用有不解之處時,你就可以瀏覽我們的文章了

混合排序規(guī)則環(huán)境

兼容性問題對使用多個排序規(guī)則存儲數(shù)據(jù)的組織會有影響。大多數(shù)組織對所有的 Microsoft® SQL Server數(shù)據(jù)庫™ 2000 數(shù)據(jù)庫使用相同的排序規(guī)則,從而消除了所有的排序規(guī)則兼容性問題。然而,有些組織存儲的數(shù)據(jù)必須可由使用不同語言的用戶查看,并且希望盡可能減少排序規(guī)則兼容性問題。

所有字符和 Unicode 對象(如列、變量和常量)都有排序規(guī)則。每當(dāng)使用具有不同排序規(guī)則和代碼頁的對象時,都必須對查詢進(jìn)行編碼以符合排序規(guī)則類型強(qiáng)制規(guī)則。當(dāng)對使用運算符將多個具有不同排序規(guī)則的簡單表達(dá)式組合在一起的復(fù)雜表達(dá)式進(jìn)行編碼時,所有排序規(guī)則必須可以隱性轉(zhuǎn)換,或者可以使用 COLLATE 子句顯式轉(zhuǎn)換。

如果沒有在字符或 Unicode 表達(dá)式中指定排序規(guī)則,則默認(rèn)排序規(guī)則可能因連接的當(dāng)前數(shù)據(jù)庫設(shè)置而異。例如,如果沒有在字符或 Unicode 常量上指定 COLLATE 子句,則將給該常量指派當(dāng)前數(shù)據(jù)庫的默認(rèn)排序規(guī)則。這意味著 Transact-SQL 語句的結(jié)果在不同數(shù)據(jù)庫的上下文中執(zhí)行時可能有不同的排序規(guī)則。

若設(shè)置復(fù)制,則復(fù)制網(wǎng)絡(luò)(包括發(fā)布服務(wù)器、訂閱服務(wù)器和分發(fā)服務(wù)器)中包括的所有數(shù)據(jù)庫都必須使用相同的代碼頁。

大容量復(fù)制函數(shù) BULK INSERT 和 bcp 命令提示實用工具支持列排序規(guī)則。

盡可能減少排序規(guī)則問題

如果必須存儲反映多種語言的字符數(shù)據(jù),始終使用 Unicode nchar、nvarchar 和 ntext 數(shù)據(jù)類型(而不是 char、varchar、text 數(shù)據(jù)類型)可使排序規(guī)則兼容性問題減到最少。使用 Unicode 數(shù)據(jù)類型可消除代碼頁轉(zhuǎn)換問題。

對減少排序規(guī)則兼容性問題的另一個建議是使站點標(biāo)準(zhǔn)化,使之區(qū)分或不區(qū)分大小寫和重音字符。若始終選擇對大小寫和重音使用相同敏感性的排序規(guī)則,最終用戶將在所有系統(tǒng)間體驗到一致的行為。大多數(shù) SQL Server 2000 站點選擇不區(qū)分大小寫但區(qū)分重音。

大小寫敏感性還適用于 SQL Server數(shù)據(jù)庫 的對象名;因此,若指定區(qū)分大小寫的排序規(guī)則,則所有用戶在查詢數(shù)據(jù)庫時必須指定正確的大小寫。例如,若服務(wù)器區(qū)分大小寫并創(chuàng)建一個名為 Employees 的表,則所有的查詢都必須將該表引用為 Employees。未使用正確大小寫的引用(如 EMPLOYEES 或 employees)將無效。

排序規(guī)則和 tempdb

每次啟動 SQL Server 時都生成 tempdb 數(shù)據(jù)庫,該數(shù)據(jù)庫與 model 數(shù)據(jù)庫的默認(rèn)排序規(guī)則相同,后者通常與實例的默認(rèn)排序規(guī)則相同。如果為創(chuàng)建的用戶數(shù)據(jù)庫指定的默認(rèn)排序規(guī)則與 model 的排序規(guī)則不同,則該用戶數(shù)據(jù)庫與 tempdb 的默認(rèn)排序規(guī)則也不同。所有的臨時存儲過程或臨時表都創(chuàng)建并存儲在 tempdb 中,這意味著臨時表中的所有隱性列以及臨時存儲過程中的所有類型強(qiáng)制默認(rèn)常量、變量和參數(shù)與***表和***存儲過程中創(chuàng)建的對等對象使用不同的排序規(guī)則。

text 數(shù)據(jù)類型可能由此產(chǎn)生問題。例如,某個 SQL Server 2000 實例的默認(rèn)排序規(guī)則是 Latin1_General_CS_AS,并且執(zhí)行以下語句:

  1. CREATE DATABASE TestDB COLLATE Estonian_CS_AS USE TestDB   
  2. CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, TextCol text )  

在該系統(tǒng)中,tempdb 數(shù)據(jù)庫對代碼頁 1252 使用 Latin1_General_CS_AS 排序規(guī)則,TestDB 和 TestPermTab.TextCol 對代碼頁 1257 使用 Estonian_CS_AS 排序規(guī)則。如果接下來執(zhí)行:

  1. USE TestDB GO -- Create a temporary table with the same column declarations   
  2. -- as TestPermTab CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, TextCol text )  
  3.  -- This statement gets an code page conversion not allowed error   
  4. -- because the temporary table is created in tempdb, which has a  
  5. -- different default collation than TestDB. INSERT INTO  
  6. #TestTempTab SELECT * FROM TestPermTab GO  

若要消除錯誤,可使用以下可選方法之一:

在兩個 TextCol 列中使用 Unicode 數(shù)據(jù)類型 ntext 而不是 text。

指定臨時表列使用用戶數(shù)據(jù)庫(而不是 tempdb)的默認(rèn)排序規(guī)則。如果系統(tǒng)需要,這將使臨時表得以在多個數(shù)據(jù)庫中使用具有類似格式的表。

  1. CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY,   
  2. TextCol text COLLATE database_default )   

指定 #TestTempTab 列的正確排序規(guī)則:

  1. CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, TextCol text COLLATE Estonian_CS_AS ) 

BACKUP 和 RESTORE 中的排序規(guī)則

若還原數(shù)據(jù)庫,RESTORE 將使用記錄在備份文件中的源數(shù)據(jù)庫的排序規(guī)則。還原的數(shù)據(jù)庫與備份的原始數(shù)據(jù)庫使用相同的排序規(guī)則。數(shù)據(jù)庫內(nèi)具有不同排序規(guī)則的個別對象仍保留其原來的排序規(guī)則。即使運行還原的實例與運行 BACKUP 的實例使用不同的默認(rèn)排序規(guī)則,仍能還原數(shù)據(jù)庫。

若目標(biāo)服務(wù)器上已存在同名數(shù)據(jù)庫,還原備份的***方法是在 RESTORE 語句中指定 REPLACE。若指定 REPLACE,現(xiàn)有的數(shù)據(jù)庫將由備份文件中的數(shù)據(jù)庫內(nèi)容完全替換,并且還原數(shù)據(jù)庫的排序規(guī)則將與備份文件中記錄的排序規(guī)則相同。

若還原日志備份,目的數(shù)據(jù)庫必須與源數(shù)據(jù)庫的排序規(guī)則相同。

排序規(guī)則和文本列

若創(chuàng)建的含有 text 列的表所使用的代碼頁與數(shù)據(jù)庫默認(rèn)排序規(guī)則的代碼頁不同,則僅有兩種方法可指定插入列的數(shù)據(jù)值或更新現(xiàn)有值??梢裕?/p>

指定 Unicode 常量。

從另一個具有相同代碼頁的列中選擇值。

假設(shè)數(shù)據(jù)庫和表如下:

  1. -- Create a database with a default of code page 1252. CREATE DATABASE TestDB  
  2. COLLATE Latin1_General_CS_AS -- Create a table with a different code page,   
  3. 1253. CREATE TABLE TestTab (PrimaryKey int PRIMARY KEY, TextCol text COLLATE Greek_CS_AS )  
  4. -- This INSERT statement successfully inserts a Unicode string. INSERT INTO TestTab VALUES (1, N'abc')  
  5. -- This INSERT statement successfully inserts data by selecting   
  6. -- from a similarly formatted table in another database that uses  
  7. -- uses the Greek 1253 code page as its default. INSERT  
  8. INTO TestTab SELECT * FROM GreekDatabase.dbo.TestTab  

以上的相關(guān)內(nèi)容就是對SQL Server數(shù)據(jù)庫的 “混合排序規(guī)則環(huán)境”的介紹,望你能有所收獲。

【編輯推薦】

  1. L Server 2000重建索引的實際操作流程
  2. 改善SQL Server安全規(guī)劃的6步驟
  3. SQL Server 2000文件損壞的修復(fù)方案
  4. SQL Server 2000優(yōu)化SELECT 語句的方案介紹
  5. SQL Server處理空值操作中的3大問題有哪些?
責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-06 08:36:55

SQL Server實

2010-07-21 10:27:49

SQL Server

2010-07-21 10:15:43

SQL Server

2010-07-21 10:05:29

SQL Server排

2010-07-01 11:14:36

SQL Server

2010-07-01 11:03:04

SQL Server轉(zhuǎn)

2010-06-30 11:16:50

SQL Server

2011-08-25 15:19:25

SQL Server 排序規(guī)則

2010-07-05 13:29:56

2010-07-01 11:20:38

SQL Server

2010-07-05 13:36:21

SQL Server

2010-07-07 10:31:43

SQL Server數(shù)

2011-08-22 09:55:30

SQL Server 排序

2010-11-11 14:14:52

SQL Server排

2010-07-05 12:33:13

SQL Server

2010-06-18 12:45:20

SQL Server數(shù)

2010-11-11 14:05:17

SQL Server排

2010-04-09 10:32:03

Oracle 數(shù)據(jù)庫

2010-07-22 15:13:08

SQL Server

2010-07-15 17:28:50

SQL Server
點贊
收藏

51CTO技術(shù)棧公眾號