SQL Server Management Studioの下部にこれが表示されている場合、これは、行を編集するためのアクセス許可がないことを意味しますか?
3 に答える
または、列が計算列であるか、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バージョンで修正されたばかりです...
テーブルの1つ以上の列でのみそのメッセージが表示される場合は、そのセルが計算列である可能性があり、定義上、更新をサポートしていないようです。または、更新をサポートしていないID列の場合もあります。
計算列かどうかを確認するには:テーブルデザイナに移動すると、データ型が指定されておらず、代わりに(以下のプロパティで)計算列の仕様が指定されていることがわかります。または、DDLAS
に列の句が表示されます。
現在編集しようとしているその列がIDENTITY列である場合、このメッセージが表示されます。