【发布时间】:2013-02-07 17:43:31
【问题描述】:
我通常可以在 SO 中找到我的问题的答案,但我找不到有关此主题的信息(可能是我提出了错误的问题)。
背景:六年前,一些开发人员将 Visual FoxPro 数据库升级为 SQL Server 2005(表结构和数据)。该过程引入了各种错误,现在我正在尝试修复这些错误以改进数据结构和性能(将 TEXT 更改为 VARCHAR(MAX),将一些浮点数更改为 DECIMAL,删除未使用的列...)
我之前的任务是:查找分配给所有表中所有列的所有 默认约束,其中对应的默认对象在 sys.default_constraints 中不存在,并修复它们,将空字符串分配给 @ 987654322@/varchar、0 到 Decimal 等...(超过 30% 的列损坏...是的,我知道 -_- wtf!。我的脚本运行顺利,到目前为止一切都很好。
只是为了好玩,我在其中一个表中执行SP_HELP 以验证固定列,但注意到我没有更改的char 列的默认值为(space((1))),而不是普通的空字符串''我正在使用。
我的问题是:我是否应该将这些列原封不动地保留为默认值 (space((1)))?还是我应该将其更改为''(更改脚本来做到这一点真的很容易)?
我敢打赌,我应该更改它(在每次插入时调用一个函数不可能是免费的),但我想先确定一下。
PD:我不是 DBA,而是一个时不时必须戴上 DBA 帽子的开发人员。
【问题讨论】:
-
我赞赏您为使数据库更接近理想而做出的努力。
-
过去 2 年我一直想这样做,但一直没有时间,总有一场大火我必须先扑灭 :S
标签: sql-server