我已经通过网络研究过这个问题,但找不到明确的答案。
我们的服务器团队最近将 SQL Servers VM 从 Win 2003 升级到 Win 2012。
考虑到我们的地区,我们在 en-ZA 下运行所有内部构建的应用程序。
但是我们有一个解决方法,即 SQL Server 2012 需要在具有 en-US 设置的帐户下运行。这是为了支持旧版 metastorm 工作流应用程序。
当 SQL 服务器代理作业触发控制台应用程序 (en-ZA) 生成具有大量货币值的逗号分隔文件时,就会出现此问题。
代理在 en-US 下运行,因此应用程序进入“某处”(我希望是某种可编辑的操作系统存储)并获取自 Win 2003 以来已更改的“默认”en-ZA 设置。
逗号分隔文件的小数分隔符现在为“COMMA”,而不是“DOT”。以前的 Win 2003 版本对较大的货币值使用“DOT”小数分隔符。
货币值中的逗号会导致另一个导入应用程序出现问题。
问题是区域的默认值存储在哪里?如何更改它们?我需要知道这一点,以便我可以将 en-ZA 的默认设置恢复为 Win 2003 中的样子。
我知道可以为帐户自定义区域设置,但如何更改实际的默认 en-ZA 设置。
如果我能理解这一点,那么也许可以通过组策略来纠正。
答案1
答案2
区域设置适用于每个用户。对于系统帐户,您可以通过注册表更改它,请参阅这里
更改 HKEY_USERS/.DEFAULT/International/sDecimal 键
答案3
您正在寻找的是“区域设置”。
在 Server 2012 中(至少在美国英语中),您可以通过打开“开始”菜单并键入“区域”来访问它们。它位于设置下,并且是唯一出现的项目,标题为Change date, time or number formats
。
如果您单击Additional settings...按钮,然后单击Currency选项卡,您可以自定义格式,并将“小数符号”和/或“数字分组符号”更改为不会导致 SQL 服务器出现问题的符号。
如果你想通过 GPO 更改此设置,或者编辑实际的注册表值,那么technet 博客也介绍了如何这样做。它是通过计算机组策略首选项注册表集合(Computer Configuration
-> Preferences
-> Windows Settings
-> Registry
)完成的,您需要的注册表子项位于下HKEY_CURRENT_USER\Control Panel\International
。