【问题标题】:SQL Server database with different language from the instance default与实例默认语言不同的 SQL Server 数据库
【发布时间】:2018-03-09 10:47:58
【问题描述】:

我的主要生产数据库是 SQL Server 2014,默认语言设置为英语,当然,日期被视为 MM/dd/yyyy

现在,出于与旧应用程序的兼容性原因,我必须创建一个新数据库,其中语言 = 意大利语,日期视为 dd/MM/yyyy

谷歌了一下,我发现我必须用部分包含选项声明这个新数据库,这允许我进一步选择意大利语作为数据库语言。

到目前为止一切顺利,但是当我尝试创建新数据库时出现以下错误:

sp_configure 值“包含数据库身份验证”必须设置为 1 才能创建包含数据库。
您可能需要使用 RECONFIGURE 来设置 value_in_use。

建议执行的程序是:

sp_configure 'contained database authentication', 1;  
GO  

RECONFIGURE;  
GO 

问题是:这是我的生产数据库,我正在篡改全局实例参数,这对现有数据库是否安全,或者我可能会受到影响?

【问题讨论】:

  • 语言(通常)设置在登录级别,而不是数据库。为什么不简单地更改该应用程序的登录语言?
  • 你的意思是在连接字符串中吗?
  • 不,当您创建登录时。 CREATE LOGIN bob WITH DEFAULT_LANGUAGE=[British]...;(显然使用你需要的语言)。
  • @Larnu 谢谢,效果很好!!如果您将建议作为答案发布,我可以将其标记为适当。再次感谢。

标签: sql-server datetime


【解决方案1】:

您不会(通常)在数据库级别设置语言设置。但是,可以为特定登录轻松设置语言设置;那么无论登录名连接到哪个数据库,它都将使用该语言的设置。

创建登录时,您将语言设置为WITH 子句的一部分。例如:

CREATE LOGIN bob WITH DEFAULT_LANGUAGE=[British]...;

这意味着登录 [bob] 将(默认情况下)使用英国语言​​(对于日期意味着它们将以 dd/MM/yyyy 的格式解释)。

由于您希望应用程序对其连接的数据库使用特定语言,如果您只是将登录名更改为使用相关的默认语言,那么它建立的任何连接都将使用该语言(除非它在声明)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2010-10-03
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2010-09-07
    • 2011-12-11
    相关资源
    最近更新 更多