我通过networking研究了这个话题,但是找不到明确的答案。
我们的服务器团队最近将我们的SQL Server虚拟机从Win 2003升级到Win 2012。
根据我们的地区,我们在en-ZA下运行我们所有的内部应用程序。
但是,我们有一个SQL Server 2012需要在en-US设置下运行的工作。 这是为了支持传统的工作stream应用程序。
当sql server代理作业触发一个控制台应用程序(en-ZA)生成一个大的货币值的逗号分隔文件时,问题就会起作用。
该代理运行在美国,所以应用程序“SOMEWHERE”(我希望有一个可编辑的操作系统商店的种类),并得到“DEFAULT”EN-ZA设置,自2003年以来已经改变。
逗号分隔的文件现在有一个“COMMA”小数点分隔符而不是“DOT”。 以前的Win 2003版本有一个“DOT”小数分隔符,用于较大的货币值。
货币价值中的逗号会导致另一个import商应用程序出现问题。
问题是区域的默认值存储在哪里? 他们怎么能改变? 我需要知道这一点,所以我可以将en-ZA的默认设置还原到Win 2003中。
我知道区域设置可以为客户定制,但实际的默认en-ZA设置如何改变。
如果我能理解这一点,那么也许这可以通过组策略纠正。
区域设置适用于每个用户。 对于系统帐户,您可以通过registry进行更改,请参阅此处
更改HKEY_USERS / .DEFAULT /国际/ sDecimal密钥
您也可以从“控制面板”执行此操作,而无需手动更改registry。 有一个选项允许您将当前用户设置应用到系统帐户。
打开语言 – >高级设置 – >将语言设置应用到…
然后点击“复制设置”button并选中“复制到欢迎屏幕和系统帐户”选项。
完成。
你要找的是“区域设置”。
在Server 2012中(至less使用美国英语),可以通过打开“开始”菜单并键入“Regional”来访问它们。 它在设置下,并且是唯一标题为“ Change date, time or number formats 。
如果您单击“ 附加设置...”button,然后select“ 货币”选项卡,则可以自定义格式,并将“十进制符号”和/或“数字分组符号”更改为不会导致SQL服务器出现问题。

如果您希望通过GPO或天堂禁止更改,请修改实际的registry值,还有一个technet博客,介绍如何这样做 。 它通过计算机组策略首选项registry集合( Computer Configuration – > Preferences – > Windows Settings – > Registry ),并且您想要的registry子HKEY_CURRENT_USER\Control Panel\International位于HKEY_CURRENT_USER\Control Panel\International 。