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 Collat​​e 您是在 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的主要内容,如果未能解决你的问题,请参考以下文章

如何将lvm卷移动到另一台服务器中

如何使用 ASP.NET 将文件从一台机器移动到另一台机器?

将 SQL Server Express 数据库复制到另一台计算机

无法从 Web 服务器连接到 SQL Server Express

如何在 PHP 中将上传的文件移动到另一台主机

如何将本地数据库备份到另一台服务器上?