我有一台安装了Microsoft SQL Server 2016(SP1)的Windows 8机器。
在我的数据库上:
alter table myAddress
alter column myTown nvarchar(100) NOT NULL
当我在这台机器上运行上述查询时,要改变列大小,现有列大小为50,查询工作正常,没有任何错误。
现在,我安装了另一台安装了Microsoft SQL Server 2016(SP1)的Windows 10计算机。
当我在这台Windows 10机器上运行相同的上述查询时,我得到以下错误:
Msg 5074, Level 16, State 1, Line 5
The object 'defEmptyString' is dependent on column 'myTown'.
Msg 5074, Level 16, State 1, Line 5
The index 'IX_myAddress_Name_Town' is dependent on column 'myTown'.
Msg 5074, Level 16, State 1, Line 5
The index 'IX_myAddress_Town' is dependent on column 'myTown'.
Msg 4922, Level 16, State 9, Line 5
ALTER TABLE ALTER COLUMN myTown failed because one or more objects access this column.
我最初安装SQL server 2017数据库实例并遇到了这个问题,所以我安装了2016数据库实例,但我仍然得到同样的错误。有什么想法吗?
我无法更改查询,因为它是一个旧脚本,是创建数据库的大脚本的一部分,团队中的每个人都使用它。我的新Windows 10机器的配置必须有不同的东西。任何想法都会对你们所有专家有所帮助。
谢谢。
编辑:
我想我已经成功地重现了它。使用SQL_Latin1_General_CP1_CI_AS设置列的排序规则
http://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=1e04f2572305efd5337cb47bc6af419b
谢谢大家的回复。同时,我一直在努力将服务器的排序规则从sql_latin1_General_CP1_CI_AS更改为Latin1_General_CI_AS(与数据库匹配排序)。从管理工作室重新启动sql server,现在它可以工作了。
我想我已经成功地重现了它。使用SQL_Latin1_General_CP1_CI_AS设置列的排序规则
转载:http://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=1e04f2572305efd5337cb47bc6af419b
解决方案:https://www.mssqltips.com/sqlservertip/3519/changing-sql-server-collation-after-installation/