假如在 CREATE INDEX 語句中指定了 IGNORE_DUP_KEY,并執行了產生重復鍵的 INSERT 或 UPDATE 語句,SQL Server 就會發出一條警告消息,并忽略(不插入)此重復的行。假如沒有給索引指定 IGNORE_DUP_KEY,SQL Server 就會發出一個錯誤信息,并回滾整個 INSERT 語句。有關這些選項的具體信息,請參見 SQL Server Books Online。
對于每個字符使用 1 個字節編碼的數據類型來說,一個問題是這種數據類型只能表示 256 個不同的字符。這就要求對于不同的字母表,必須采用多個編碼規范(或代碼頁)。它也不能處理像日語 Kanji 或韓國語 Hangul 字母表這樣有幾千個字符的系統。
Microsoft SQL Server 使用與 SQL Server 一起安裝的代碼頁中的定義,將 char、varchar 和 text 列中的位模式轉換成字符。客戶計算機使用與操作系統一起安裝的代碼頁解釋位模式。 有許多種不同的代碼頁。有些字符在一些代碼頁中,但不在其它代碼頁中。有些字符在一些代碼頁中用一種位模式定義,在其它代碼頁中則使用另一種位模式。當創建必須處理各種語言的國際化系統時,要為所有計算機挑選滿足多個國家語言要求的代碼頁,就變得十分困難。而且也很難保證,所有計算機與使用不同代碼頁的系統交互時,能夠進行正確轉換。
在 SQL Server 中,nchar、nvarchar 和 ntext 數據類型均支持 Unicode 數據。有關 SQL Server 數據類型的具體信息,請參見 SQL Server Books Online。
用戶定義的數據類型。 可為 model 數據庫或單個用戶數據庫創建用戶定義的數據類型。假如用戶定義的數據類型是為 model 定義的,此后創建的所有新用戶數據庫均可使用該數據類型。用戶定義的數據類型是用 sp_addtype 系統存儲過程定義的。有關具體信息,請參見 SQL Server Books Online。
可以在 CREATE TABLE 和 ALTER TABLE 語句中使用用戶定義的數據類型,并將其與默認值和規則綁定在一起。表創建過程中,假如使用用戶定義的數據類型時,明確地定義了為空性,則它優先于數據類型創建時定義的為空性。
此例給出了,如何創建一個用戶定義的數據類型。參數為用戶類型名稱、數據類型和為空性。
sp_addtype gender_type, 'varchar(1)', 'not null' go
乍看起來,此功能解決了 Oracle 表創建腳本向 SQL Server 遷移的問題。比如,可以方便地增添 Oracle DATE 數據類型:
約束的命名 應該始終顯式命名約束。假如沒有,則 Oracle 和 Microsoft SQL Server 使用不同的命名規則隱式命名約束。這些命名上的差別會給遷移過程帶來不必要的麻煩。在刪除或禁用約束時,就會造成不一致,因為必須使用名稱,約束才能被刪除。對于 Oracle 和 SQL Server 來說,顯式命名約束的語法是相同的。