3
A
回答
3
我有這個問題,前一段時間,當我們改變了底層數據庫支持Unicode和需要改變舊的數據庫上的字符集,以支持匈牙利。
該腳本將讓你很長的路要走改變整理;您將需要手動更改主DB數據集。我不必長時間運行它,它不能修復任何計算列,但可能還有其他問題。不要在沒有經過測試的情況下在實時數據庫中運行它 - 您可能想要選擇它所做的更改,以便您可以審覈或找出稍後錯過的更改。
Declare
@NewCollation varchar(255), @DBName sysname
Select @NewCollation = 'Latin_1_CI_AI', -- change this to the collation that you need
@DBName = DB_NAME()
Declare
@CName varchar(255), @TbleName sysname, @objOwner sysname, @Sql varchar(8000), @Size int, @Status tinyint, @Colorder int
Declare CurWhileLoop cursor read_only forward_only local
for Select
QUOTENAME(C.Name)
,T.Name
,QUOTENAME(U.Name) + '.' +QUOTENAME(O.Name)
,C.Prec
,C.isnullable
,C.colorder
From syscolumns C
inner join systypes T on C.xtype=T.xtype
inner join sysobjects O on C.ID=O.ID
inner join sysusers u on O.uid = u.uid
where T.Name in ('varchar', 'char', 'text', 'nchar', 'nvarchar', 'ntext')
and O.xtype in ('U')
and C.collation != @NewCollation
and objectProperty(O.ID, 'ismsshipped')=0
order by 3, 1
open CurWhileLoop
SET XACT_ABORT ON
begin tran
fetch CurWhileLoop into @CName, @TbleName, @objOwner, @Size, @Status, @Colorder
while @@FETCH_STATUS =0
begin
set @Sql='ALTER TABLE '[email protected]+' ALTER COLUMN '[email protected]+' '[email protected]+ isnull ('('
+convert(varchar,@Size)+')', '') +' COLLATE '+ @NewCollation
+' '+case when @Status=1 then 'NULL' else 'NOT NULL' end
exec(@Sql) -- change this to print if you need only the script, not the action
fetch CurWhileLoop into @CName, @TbleName, @objOwner, @Size, @Status, @Colorder
end
close CurWhileLoop
deallocate CurWhileLoop
commit tran
+0
你好,我想你的腳本,可能的重複,但索引正在阻止我更改列歸類(表示對象取決於列)。你知道這個解決方法嗎?謝謝! – 2010-11-22 14:56:08
+1
你將不得不放棄他們都害怕。你可以用管理工作室把它們編出來,然後放回去。 – u07ch 2010-11-24 11:48:23
相關問題
- 1. 改變數據庫排序規則不改變列排序規則
- 2. 更改的SQL Server 2012的排序規則數據庫
- 3. 如何在sql server中更改主數據庫排序規則?
- 4. Sql Server 2005 - 更改排序規則
- 5. SQL Server排序規則
- 6. SQL Server 2008排序規則
- 7. SQL Server 2008數據庫排序規則轉換
- 8. 更改SQL Server數據庫排序
- 9. SQL Server 2005:更改現有數據庫和LINQ2SQL的排序規則
- 10. 如何在SQL Server 2005上更改AdventureWorks數據庫排序規則?
- 11. 更改MS SQL中數據庫的排序規則
- 12. 如何更改CRM 2011 SQL數據庫的排序規則?
- 13. 更改排序規則後數據庫變慢
- 14. 數據庫排序SQL Server
- 15. SQL Server 2005的Unicode排序規則?
- 16. SQL Server代碼頁和排序規則
- 17. SQL Server排序規則選擇
- 18. 排序規則衝突的SQL Server
- 19. SQL Server中索引的排序規則
- 20. 在多個SQL Server數據庫上強制執行相同的排序規則
- 21. 在SQL Server 2008中更改表排序規則的查詢
- 22. 更改DB SQL Server 2008的排序規則
- 23. 更改SQL Server 2008的默認排序規則
- 24. 更改SQL Server 2005服務器排序規則
- 25. 更改SQL Server Compact 4.0的排序規則
- 26. 數據庫之後,SQL排序規則衝突恢復
- 27. 如何確定SQL 2005中數據庫的排序規則?
- 28. 在SQL數據庫中設置一般排序規則?
- 29. Magento更改數據庫查詢排序規則
- 30. 更改數據庫中所有對象的排序規則
[更改SQL Server數據庫排序(http://stackoverflow.com/questions/2938422/changing-sql-server-database-sorting) – gbn 2010-09-07 03:48:59