修改sql server執行個體、資料庫、表、欄位的定序

來源:互聯網
上載者:User

標籤:last   src   無效   str   prim   mic   red   局限性   efault   

轉自:http://blog.51cto.com/jimshu/1095780

 概念與詳情請參考:字元編碼與定序:https://www.cnblogs.com/gered/p/9145123.html

一、修改SQL Server伺服器(執行個體)的定序

  以下實驗使用了SQL Server 2008 R2的預設執行個體,將Chinese_PRC_CI_AS修改成SQL_Latin1_General_CP1_CI_AS。

 

1. 停止SQL Server執行個體服務

2. 開啟“命令提示字元”,轉到SQL Server的安裝目錄

C:\Users\Administrator> cd "\Program Files\Microsoft SQL Server\100\Setup Bootstrap\SQLServer2008R2"

 

3. 運行setup

C:\Program FIles\Microsoft SQL Server\100\Setup Bootstrap\SQLServer2008R2> setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver /SQLSYSADMINACCOUNTS=administrator /sqlcollation=SQL_Latin1_General_CP1_CI_AS

 

4. 啟動SQL Server執行個體服務

 

5. 驗證執行個體的定序

 

6. 驗證系統資料庫(master、model、msdb、tempdb)的定序

 

說明:此操作僅影響系統資料庫。對於已經存在的使用者資料庫無效。

 

二、修改資料庫的定序

  以下實驗將修改資料庫db01的定序,將SQL_Latin1_General_CP1_CI_AS修改成Chinese_PRC_CI_AS。

 

1. SSMS圖形介面

 

 

2. 指令碼

ALTER DATABASE [db01] COLLATE Chinese_PRC_CI_AS

 

3. 局限性

(1)對於已經存在的資料,此操作並不會導致立即重新排序。

(2)如果已經有對象依賴於資料庫定序,則更改不成功。

 

 

三、修改表的定序

  表的定序依賴於資料庫的定序。不能修改。

 

 

四、修改列的定序

  建議:將這個表的資料儲存到另一個暫存資料表,重建這個表,然後從暫存資料表將資料匯入到新表。

  可以通過SSMS修改某一列的定序,但是,這項操作實際上還是刪除這個表以及相關的約束、觸發器,然後重建這個表、約束、索引、觸發器。

 

 

 

ALTER TABLE dbo.EmpBasic DROP CONSTRAINT DF__EmpBasic__FirstN__2319CD4B
ALTER TABLE dbo.EmpBasic DROP CONSTRAINT ......

CREATE TABLE dbo.Tmp_EmpBasic ( ......
FirstName nvarchar(30) COLLATE Chinese_PRC_CI_AS NULL,
...... ) ON [PRIMARY]

ALTER TABLE dbo.Tmp_EmpBasic SET (LOCK_ESCALATION = TABLE)
GRANT DELETE ON dbo.Tmp_EmpBasic TO public AS dbo
GRANT INSERT ON dbo.Tmp_EmpBasic TO public AS dbo
GRANT SELECT ON dbo.Tmp_EmpBasic TO public AS dbo
GRANT UPDATE ON dbo.Tmp_EmpBasic TO public AS dbo

ALTER TABLE dbo.Tmp_EmpBasic ADD CONSTRAINT DF__EmpBasic__FirstN__2319CD4B DEFAULT (‘‘) FOR FirstName
ALTER TABLE dbo.Tmp_EmpBasic ADD CONSTRAINT DF__EmpBasic__Middle__240DF184 ......

SET IDENTITY_INSERT dbo.Tmp_EmpBasic ON

IF EXISTS(SELECT * FROM dbo.EmpBasic)
EXEC(‘INSERT INTO dbo.Tmp_EmpBasic (Company, EmpID, FirstName,......)
SELECT Company, EmpID, FirstName, ...... FROM dbo.EmpBasic WITH (HOLDLOCK

TABLOCKX)‘)


SET IDENTITY_INSERT dbo.Tmp_EmpBasic OFF

DROP TABLE dbo.EmpBasic
EXECUTE sp_rename N‘dbo.Tmp_EmpBasic‘, N‘EmpBasic‘, ‘OBJECT‘

CREATE UNIQUE CLUSTERED INDEX EmpID ON dbo.EmpBasic
(Company, EmpID ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,

ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY]

CREATE NONCLUSTERED INDEX FirstName ON dbo.EmpBasic
( Company, FirstName, LastName ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,

ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY]

create trigger _ti_EmpBasic ON dbo.EmpBasic for insert as
begin
......
end

修改sql server執行個體、資料庫、表、欄位的定序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.