0

如果我在 SQL Server Management Studio 的底部看到这个,这是否意味着我没有编辑行的权限?

在此处输入图像描述

4

3 回答 3

4

或者该列是计算列,或者由IDENTITY属性填充,或ROWVERSION,或...

尝试编辑此表中的数据,您将看到所有三列都是只读的:

USE tempdb;
GO

CREATE TABLE dbo.flub
(
  i INT IDENTITY(1,1),
  x AS (i + 1),
  r ROWVERSION
);
INSERT dbo.flub DEFAULT VALUES;

如果您共享表的定义,我们至少可以告诉您为什么是由于这些原因之一(我们需要更多信息来确认它是否是列级权限问题)。

更好的建议:停止使用“打开表格”、“编辑前 200 行”或任何其他类似 Excel 的网格来修改数据。使用语句编写正确的 DML UPDATE- 我向您保证,当您尝试修改无法修改的值时,您收到的错误消息几乎在每种情况下都会更具描述性。上面的例子:

UPDATE dbo.flub SET i = 5;

消息 8102,级别 16,状态 1,第 1 行
无法更新标识列“i”。

UPDATE dbo.flub SET x = 5;

消息 271,级别 16,状态 1,第 1 行
无法修改列“x”,因为它是计算列或 UNION 运算符的结果。

UPDATE dbo.flub SET r = 0x00;

消息 272,级别 16,状态 1,行 1
无法更新时间戳列。

我在这里讨论了这些 UI 中的几个错误,此后也报告了其他错误。例如,这个在 2012 版本中刚刚修复...

于 2013-01-28T04:00:27.393 回答
0

如果您只在表中的一个或多个列上收到该消息,那么听起来该单元格可能是一个计算列,根据定义,它不支持更新。或者,它可能是一个也不支持更新的标识列。

要查看它是否是计算列:如果您转到表设计器,您会注意到没有指定数据类型,而是(在下面的属性中)一个计算列规范。或者,在 DDL 中,您将看到AS该列的子句。

于 2013-01-28T03:59:05.737 回答
0

如果您当前尝试编辑的该列是 IDENTITY 列,它将显示此消息。

于 2013-01-28T04:03:16.920 回答