是否有辦法完全遍歷數據庫中的所有表並將所有varchar
數據類型更改爲nvarchar
數據類型?將varchar更改爲數據庫中所有表列的nvarchar
由於受索引,唯一鍵以及不可用的限制,下面的簡單SQL無法按預期工作。
ALTER TABLE [CUS].[Customers]
ALTER COLUMN [CustomerNo] NVARCHAR(500);
我試圖通過GUI方式從SSMS更改它們,並且事件探查器實際上顯示了它如何真正更改數據類型。
- 步驟1:它創建的臨時表,與
nvarchar
柱從varchar
改變 - 步驟2:設置一些鎖升級(不知道這是什麼)
- 步驟3:從原始表中插入所有數據到臨時表
- 步驟4:滴原表
- 步驟5:重命名臨時表原始表的名稱
- 步驟6:添加約束
- 第7步:添加索引
這涉及很多步驟,這是相當繁瑣的,如果我是做手工。
任何人都可以提出一個更靈活的解決方案來解決我的問題嗎?
我不認爲有一個更安全的方法來做到這一點。您可以更新syscolumns表中的varchar數據類型,但這可能會導致不一致。我建議你遵循7個步驟。 – MayowaO
你絕對應該使用nvarchar,但只在適當的地方。這些是一些關於你可能不希望改變類型的例子:'CustomerNo'(就像上面的例子,如果它只不過是字符0-9),或者配置持久化爲json或密碼哈希,等等。關鍵是它會吸引一個大型數據庫,但是通過架構和枚舉不應該轉換的列可能是謹慎的。 – Igor
該應用程序擴展到英語以外,varchar在我們有中國/泰國客戶時一直運行良好。 – IvanJazz