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

问题描述 投票:0回答:1

我有一台安装了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-server
1个回答
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”
© www.soinside.com 2019 - 2024. All rights reserved.