更改列大小会在SQL Server中引发依赖性错误

时间:2018-01-30 11:10:42

标签: sql-server

我安装了安装了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

1 个答案:

答案 0 :(得分:0)

感谢大家的回复。同时,我一直在努力将服务器的排序规则从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/

  1. 从Windows服务中停止SQLServer服务
  2. 运行sqlservr -m -T4022 -T3659 -s“SQLEXP2014”-q“SQL_Latin1_General_CP1_CI_AI”