Sql Server:一旦我移动到另一台服务器,文化就会改变。 c# .NET
Posted
技术标签:
【中文标题】Sql Server:一旦我移动到另一台服务器,文化就会改变。 c# .NET【英文标题】:Sql Server: culture changed once i moved to another server. c# .NET 【发布时间】:2012-08-22 09:45:29 【问题描述】:最近我决定搬到另一台服务器。现在我的应用程序运行在具有不同文化(IT 和 EN)的不同服务器上。
一切正常,但现在我在日期和数字方面遇到了很多问题。
主要问题似乎是 SQL Server。事实上,SQL SERVER 会抛出错误。 我使用 ParseExact 方法解决了日期问题:
e.Command.Parameters["@Expiry"].Value =
DateTime.ParseExact("31/12/2099", "dd/MM/yyyy", null);
对于十进制数,我必须交换“。”和“,”(取决于文化)如果我想让应用程序工作:
Latitude.Value = Latitude.Value.Replace(".", ","); //ONLY for ITALIAN CULTURE
e.Command.Parameters["@Latitude"].Value = Latitude.Value;
我再说一遍:错误是由 SqlServer 生成的。 有没有办法一劳永逸地设置文化?
PS:EN 服务器是 GoDaddy Hosting。
更新: 问题是纯 Sql Server。 事实上,检查我的服务器,我在第一个服务器上发现了一个“,”和一个“。”在第二个作为货币和小数的分隔符。我发现: ALTER LOGIN 'MYDBLOGIN' WITH DEFAULT_LANGUAGE = Italian;去吧
通过前面的查询,我能够更改 sql server 上的文化。但是,问题仍然存在。
【问题讨论】:
这段代码是否在 CLR 对象中运行?如果没有,我看不出 C# 代码如何“修复” SQL Server 错误。 您可以使用 global.asax 设置文化,也可以设置 SQL SERVER Collate 您是在 SQL 中将日期存储为 *char 还是日期数据类型之一? 问题是纯Sql Server。事实上,检查我的服务器,我在第一个服务器上发现了一个“,”和一个“。”在第二个作为货币和小数的分隔符。我发现:ALTER LOGIN 'MYDBLOGIN' WITH DEFAULT_LANGUAGE = Italian; GO 通过前面的查询,我能够改变 sql server 上的文化。但是,问题仍然存在。 @Damien_The_Unbeliever:事实上 c# 也帮不上忙。 【参考方案1】:这会返回什么?
select @@LANGID, @@LANGUAGE
如果是意大利语,
set language us_english
(或其他...)
【讨论】:
谢谢。但是,我刚刚找到了正确的查询:ALTER LOGIN 'MYDBLOGIN' WITH DEFAULT_LANGUAGE = Italian;去【参考方案2】:而不是每次都改变 SQL 服务器文化你为什么不使用
Convert.ToDecimal(Latitude, CultureInfo.InvariantCulture);
【讨论】:
好吧,这就是我要做的。但是我有很多行代码要更改。如果我能改变 DB 的文化,那就更好了。【参考方案3】: DateTime myDate;
DateTime.TryParse(yourdate, new CultureInfo("en-US"), DateTimeStyles.None, out myDate);
或者
DateTime datet1=new DateTime(2012,5,1);
string startdate = datet1.ToString("d", DateTimeFormatInfo.InvariantInfo);
您可以更改您的数据库整理:
ALTER DATABASE test2 -- put your database name here
COLLATE Latin1_General_CS_AS -- replace with whatever collation you need
您的问题不在于 sqlserver,您在根据 CultureInfo 插入/获取日期时间时修改了代码
【讨论】:
以上是关于Sql Server:一旦我移动到另一台服务器,文化就会改变。 c# .NET的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ASP.NET 将文件从一台机器移动到另一台机器?
将 SQL Server Express 数据库复制到另一台计算机