我正在尝试使用以下命令更改sql server中的列大小:
ALTER TABLE [dbo].[Address]
ALTER COLUMN [Addr1] [nvarchar](80) NULL
其中Addr1
的长度最初是40
。
它失败了,并引发以下错误:
The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access
this column.
我试着读了一下,似乎是因为一些视图引用了此列,而且似乎SQL Server实际上试图删除引发错误的列。Address_e
是由以前的数据库管理员创建的视图。
是否有其他方法可以更改列的大小?
7条答案
按热度按时间tcomlyy61#
kxkpmulp2#
这些视图可能是使用WITH SCHEMABINDING选项创建的,这意味着它们被显式地连接起来以防止此类更改。看起来模式绑定起作用了,并防止了您破坏这些视图,真是幸运啊!在它Assert对数据库的影响后,请与您的数据库管理员联系,让他进行更改。
从MSDN开始:
计划绑定
将视图绑定到一个或多个基础表的架构。如果指定了SCHEMABINDING,则不能以影响视图定义的方式修改一个或多个基表。必须首先修改或删除视图定义本身才能删除对要修改的表的依赖项。
eaf3rand3#
如果您想在SQL Server 2008中“增加复制表的列宽”,则无需更改“
replicate_ddl=1
“的属性,只需按照以下步骤操作即可--1.打开SSMS
1.连接到发布服务器数据库
1.运行命令--
ALTER TABLE [Table_Name] ALTER COLUMN [Column_Name] varchar(22)
1.它会将列宽从
varchar(x)
增加到varchar(22)
,您可以在订阅者上看到相同的更改(事务已复制)。希望这将有助于所有谁正在寻找它。
zi8p0yeb4#
查看此链接
Resize or Modify a MS SQL Server Table Column with Default Constraint using T-SQL Commands
这样的SQL Server问题的解决方案将是
删除或禁用表列的DEFAULT约束条件。
修改表列数据类型和/或数据大小。
重新创建或重新启用sql表列的默认约束。
再见
4si2a6ki5#
下面 是 我 正在 使用 的 程序 版本 的 工作 方式 :可能 对 你 也 有用 。
我 将 只 放置 执行 此 操作 的 指令 和 命令 。 class 是 表 的 名称 。 您 可以 使用 此 方法 在 表 中 更改 它 本身 。 而 不仅仅 是 搜索 过程 的 返回 。
查看 表 类
中 的 每 一 个
更改 FacID ( 显示 为 " faci " ) 和 classnumber ( 显示 为 " classnu " ) 列 的 长度 以 适合 整个 标签 。
格式
再次 查看 表 以 查看 差异
格式
(run命令 以 查看 差异 )
这 将 永远 改变 实际 的 表 , 但 会 变得 更 好 。
我 把 这些 说明 作为 命令 的 注解 。 这 不 是 测试 , 但 可以 帮助 一 个 : )
svujldwt6#
请检查列排序规则。此脚本可能会将排序规则更改为表默认值。请将当前排序规则添加到脚本中。
j9per5c47#
您可以分3步更改列的大小:
1.更改视图
Address_e
并纳入注解列/*Addr1*/
1.运行脚本
1.然后再次更改视图
Address_e
,以取消注解列Addr1