在项目属性页面的“项目设置”选项卡中,有一个名为数据库模型的排序规则的选项。
项目设置(.sqlsettings文件)中还有一个名为数据库归类的选项。
然后在项目属性页面的“部署”选项卡中,有一个指向部署配置文件的链接,该文件有一个名为部署比较排序规则的选项。< / p>
我很困惑,但更重要的是,即使我已将最后一个选项设置为使用服务器的排序规则,部署脚本也始终包含以下语句:
ALTER DATABASE [$(DatabaseName)] COLLATE Latin1_General_CI_AS;
导致以下错误:
ALTER DATABASE失败。默认 整理数据库'数据库' 不能设置为Latin1_General_CI_AS。
理想情况下,我不想考虑整理,并且始终遵循目标数据库级别设置的内容,但不知何故,SQL Server项目的各种选项使得很难预测在实际部署中会发生什么。 / p>
您能解释一下这些选项的作用以及它们如何相互作用和/或互相干扰吗?
答案 0 :(得分:1)
虽然我无法详细说明过多的不同校对设置所做的事情,但我可以指出一个设置帮助我在搜索ALTER DATABASE COLLATE的补救措施时总是在部署脚本中。
在数据库项目中=&gt;属性=&gt; Database.sqldeployment设置有一个ScriptDatabaseCollation
,当解开时,解决了我的问题。
答案 1 :(得分:1)
我相信您看到的COLLATE Latin1_General_CI_AS来自您的项目设置中指定的默认排序规则。这可以通过以下方式访问:
这将打开Database.sqlsettings,您将看到第一个条目是项目在生成脚本时使用的默认数据库排序规则。
部署比较排序规则用于在部署项目时比较模型的数据库。我认为这仅在您直接部署到数据库时才起作用,而不是在您使用生成.sql脚本文件的默认设置时。
正如eddie所指出的,Database.sqldeployment文件中有一个设置,当取消选中时,从CREATE和ALTER脚本中删除烦人的排序规则说明符。