首先,換款數據庫排序規則不表影響現有列,但會影響到新創建的表和列。這是在數據庫中創建新對象時使用的默認排序規則。
所以,你要做的是找到所有現有的列和更新當前的排序規則。
您可以使用SQL遊標做到這一點,並查詢特定類型或列名的所有表和列和更新排序規則。
例如:
1)更改歸類爲未來的對象
USE master;
GO
ALTER DATABASE databasename COLLATE French_CI_AI ;
GO
2)手動更改列排序規則爲特定列
ALTER TABLE tablenameX ALTER COLUMN LastName varchar(100) COLLATE French_CI_AI NULL
ALTER TABLE tablenameY ALTER COLUMN FirstName varchar(100) COLLATE French_CI_AI NULL
3)生成一個SQL腳本用光標
您需要決定要更改coltiti的列上。它可以按類型,名稱或特定表格。
您可以通過查看至極類型必須和在例如替換它們卡拉科特類型的啓動,請參閱列光標。
選擇INFORMATION_SCHEMA.COLUMNS
你可以參考這個帖子不同的DATA_TYPE:
http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of-all-Database
declare @CollationName as nvarchar = 'Latin1_General_CI_AS'
declare @tablename as nvarchar(100) = ''
declare @sqltext as nvarchar(100) = ''
declare @columnname as nvarchar(200) = ''
declare @DataType as nvarchar(100) = ''
declare @CharacterMaxLen as int = 0
declare @IsNullable as bit = 0
DECLARE MyTableCursor Cursor
FOR
SELECT * from information_schema.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
OPEN MyTableCursor
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE MyColumnCursor Cursor
FOR
SELECT COLUMN_NAME,DATA_TYPE, CHARACTER_MAXIMUM_LENGTH,
IS_NULLABLE from information_schema.columns
WHERE table_name = @TableName AND (Data_Type LIKE '%char%'
OR Data_Type LIKE '%text%') AND COLLATION_NAME <> @CollationName
ORDER BY ordinal_position
Open MyColumnCursor
FETCH NEXT FROM MyColumnCursor INTO @ColumnName, @DataType,
@CharacterMaxLen, @IsNullable
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLText = 'ALTER TABLE ' + @TableName + ' ALTER COLUMN [' + @ColumnName + '] ' +
@DataType + '(' + CASE WHEN @CharacterMaxLen = -1 THEN 'MAX' ELSE @CharacterMaxLen END +
') COLLATE ' + @CollationName + ' ' +
CASE WHEN @IsNullable = 'NO' THEN 'NOT NULL' ELSE 'NULL' END
PRINT @SQLText
FETCH NEXT FROM MyColumnCursor INTO @ColumnName, @DataType,
@CharacterMaxLen, @IsNullable
END
CLOSE MyColumnCursor
DEALLOCATE MyColumnCursor
FETCH NEXT FROM MyTableCursor INTO @TableName
END
CLOSE MyTableCursor
DEALLOCATE MyTableCursor
你確定*列*有你所期望的排序規則?更改數據庫不會返回並更改所有現有的列。 – 2012-07-24 13:25:36
我不知道列本身有一個整理。我會檢查的。謝謝 – 2012-07-24 13:27:45
它使用了一列,所以我現在要做的就是瀏覽所有用來搜索的列,這並不是很多。謝謝。如果您想獲得學分,您可以將您的評論作爲答案! – 2012-07-24 13:30:17