更改数据库中所有对象的排序规则

时间:2014-08-29 11:14:23

标签: sql-server sql-server-2008 sql-server-2008-r2

我需要更改已还原数据库的排序规则以匹配服务器和tempdb数据库。我知道我可以使用ALTER DATABASE和ALTER TABLE来改变collertion。但它只会影响添加到表中的新数据吗?

我必须走在路上吗?
  • 需要重新创建用户数据库及其中所有对象的脚本
  • 使用bcp Utility
  • 等工具导出所有数据
  • 创建新数据库
  • 在右侧集合中编写表格并导入所有数据。

这是Microsoft Sql Server 2008

1 个答案:

答案 0 :(得分:2)

我用过这个脚本:

DECLARE @collation NVARCHAR(64)
SET @collation = 'Latin1_General_CI_AS'

SELECT
    'ALTER TABLE [' + TABLE_SCHEMA  + '].[' + TABLE_NAME + '] '
  + 'ALTER COLUMN [' + COLUMN_NAME + '] '
  + DATA_TYPE + '(' + CASE CHARACTER_MAXIMUM_LENGTH 
        WHEN -1 THEN 'MAX' 
        ELSE CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) END + ') '
  + 'COLLATE ' + @collation + ' '
  + CASE WHEN IS_NULLABLE = 'NO' THEN 'NOT NULL' ELSE 'NULL' END
FROM INFORMATION_SCHEMA.columns
WHERE  COLLATION_NAME IS NOT NULL
AND TABLE_NAME IN ( SELECT TABLE_NAME from information_schema.tables WHERE table_type = 'BASE TABLE'  )
AND COLLATION_NAME <> @collation

同时检查Set or Change the Database Collation