2016-08-22 3 views
3

(A.)以下は、table testの "d_no"列の条件です。ここでは、それが計算列であり、その定義がNULLであることがわかります。このケースがどのように生成できるかを知りたいのですが? NULL定義の計算カラムを作成できません。計算された列の定義がnullです

テーブル名:テスト
列名:d_no
IS_NULLABLE:1つの
定義:NULL
はis_computed:1

このケースでは、SQL Server 2012(11.0.6523)バージョンのです。

(B.)シナリオ: 実際のデータベース所有者(独自のデータベース)である「User1」が存在します。別のユーザー "User2"が存在します。 User2には、SELECTやDDLのようなUser1のデータベースにアクセスするための権限があります。 User2でログインし、計算列として列を持つテーブルのCREATEクエリを取得しようとしました。そのテーブルでは、結果クエリで計算カラム定義が得られません。 xyz(数値(18,0)ヌル)

また、以前のケース(A)でnullになる可能性のある同じ権限の問題も発生する可能性がありますか?

+1

'CREATE TABLE'をスクリプト化して質問に追加してください。 –

+0

こんにちはマーティン、私たちは第二のユーザーであるため、この許可はありません。 – maddy

+1

そのため、答えの状態として、NULLが表示されています。 –

答えて

2

あなたはnullに定義のそれぞれで独立し変更されません、ヌルとして計算列を作成し、ヌルdefinition.Evenを取得することはできません。..

create table dbo.t4 
(
id int null, 
idplus as cast(null as int) 
) 

select definition 
from sys.computed_columns 

出力:

(CONVERT([int],NULL,0)) 

あなたが見ていますNULL権限の問題による定義..

以下は、これについてですwhat MSDN has to say

データベースオブジェクトのTransact-SQLソースコードを表示するための規則は、メタデータを表示するよりも厳密です。

ユーザーがオブジェクトを所有している必要がありいずれか、またはオブジェクト上の次のいずれかのアクセス権を付与されている、オブジェクトのTransact-SQLの定義を参照するには、次の

CONTROL
ALTER
に TAKEをあなたが権限を持っていない場合、所有権
ビュー定義

同じことが、同様にデ以下の景色を望む場合でありますユーザーはMYTABLEのテーブルの所有者ではなく、ユーザーが次のカタログ・ビュー、定義の列にアクセスするときに、テーブルの上にのみSELECT権限を付与されている場合finition a)は

enter image description here

+1

あなたの提案を試みましたが、まだ私は(CONVERT([int] 0))値、私はすべてを拒否しますCONTROL ALTER あなたの答えに応じてビューの定義権限を の所有権を取る。 DEFINITIONフィールドにNULL値を取得したい。どのように私はそれを行うことができます – maddy

+0

私はビューの定義に答えて指定されたアクセス許可が必要になります、それらのアクセス許可をあなたのログインに与え、あなたはそれを見ることができます – TheGameiswar

+0

Sir plz正確に指定するオブジェクト(データベース、または特定の列)これらのアクセス許可を適用または拒否する必要があります。 – maddy

0

.. nullになりますNULLです。

ユーザーがdbownerの代わりにselect(datareader)権限しか持たないことを意味します。そのユーザーとログインし、計算列の定義を確認します。

sys.computed_columns

から選択定義
にそれはあなたの定義フィールドにNULL値を与えます。

b)上記と同じユーザーの定義フィールドに計算列の定義を取得する場合、SELECT権限のみを持つユーザーは、特定のオブジェクト(計算列を持つ表)のVIEW DEFINITION権限を付与します。 ユーザー経由で。

再度、そのユーザーとログインし、クエリを実行して定義値を確認します。その時には、定義された計算列の実際の定義が表示されます。

関連する問題