0

SQL Server Management Studioの下部にこれが表示されている場合、これは、行を編集するためのアクセス許可がないことを意味しますか?

ここに画像の説明を入力してください

4

3 に答える 3

4

または、列が計算列であるか、IDENTITYプロパティ、または、、ROWVERSIONまたは...によって入力されます

このテーブルのデータを編集してみてください。3つの列すべてが読み取り専用であることがわかります。

USE tempdb;
GO

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

テーブルの定義を共有すると、少なくともこれらの理由の1つが原因である場合は、その理由を知ることができます(列レベルのアクセス許可の問題であるかどうかを確認するには、さらに情報が必要です)。

より良い提案:「テーブルを開く」、「上位200行を編集」、またはその他のExcelのようなグリッドを使用してデータを変更するのはやめましょう。ステートメントを使用して適切なDMLをUPDATE記述します-ほとんどの場合、変更できない値を変更しようとしたときに表示されるエラーメッセージがはるかにわかりやすくなることをお約束します。上記の例:

UPDATE dbo.flub SET i = 5;

メッセージ8102、レベル16、状態1、行1ID
列'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

テーブルの1つ以上の列でのみそのメッセージが表示される場合は、そのセルが計算列である可能性があり、定義上、更新をサポートしていないようです。または、更新をサポートしていないID列の場合もあります。

計算列かどうかを確認するには:テーブルデザイナに移動すると、データ型が指定されておらず、代わりに(以下のプロパティで)計算列の仕様が指定されていることがわかります。または、DDLASに列の句が表示されます。

于 2013-01-28T03:59:05.737 に答える
0

現在編集しようとしているその列がIDENTITY列である場合、このメッセージが表示されます。

于 2013-01-28T04:03:16.920 に答える