2009-05-05 51 views
1

我更改了数据库的归类。更改前的所有文本/ varchar列都设置为数据库默认值。当对数据库归类进行更改时,我希望设置为数据库默认值的列保持数据库默认值,并因此保持链接到新的数据库归类。但是,我注意到这些列实际上已被更改为专门设置为旧归类。更改数据库归类不会更新数据库中varchar/text字段的归类(MS SQL)

我有一个脚本,将更新所有列,但我很好奇,为什么这些列没有留database_default或至少得到设定新的归类。所以我有的问题是:

1:为什么列没有得到更新?

2:有没有办法让他们自动更新?

回答

2

我最近自己遇到了这个问题。更改数据库的默认排序规则仅适用于所创建的新对象 - 它不会改变任何现有的(来源:Books Online - “你可以通过使用COLLATE子句改变在用户数据库中创建任何新对象的排序规则ALTER DATABASE语句,这句话并没有改变列的排序规则中的任何现有用户定义的表。这可以通过使用ALTER TABLE的COLLATE子句来改变。”

我不知道的任何方式让他们自动更新 - 你需要手动更新他们我使用的方法从here

+0

感谢您的链接 - 所以我不会疯狂看到表列没有被更新!似乎有点不幸的是,选项不是由MS提供的全部更新 列。 此行回答我的问题: “ALTER DATABASE COLLATE命令只会改变数据库的* DEFAULT *排序规则,它不会改变现有对象(例如列和表)的排序规则,它们仍然会保存在旧的即使默认设置已更改,也可以使用排序顺序。“ 谢谢! – Madeleine 2009-05-05 16:51:59