none
sys.default_constraintsのdefinitionがNULLになる質問 RRS feed

  • 質問

  • sys.default_constraintsのdefinitionがNULLになってしまいます、これはどう考えてもおかしいのではないかと思いますので質問します。

    まず認証モードを混合モードにしてSQL Server 2005 Express Editinをインストールします。

    次にSQL Server Management Sutdio Explorerもインストールします、

    そこでlogin名saで以下の処理をします。

    create database test_database
    go
    sp_addlogin 'test_login','test','test_database'
    go
    use test_database
    go
    sp_grantdbaccess 'test_login' 
    go
    create table test_table
     (test_column1 char(5) default 'abcde'
      ,test_column2 char(3) default 'xyz')
    go
    grant select,insert,update,delete on test_table to test_login
    go
    select columns.name,types.name,columns.max_length,definition
      from sys.tables,sys.columns,sys.types,sys.default_constraints
      where tables.name='test_table'
      and tables.object_id=columns.object_id
      and columns.user_type_id=types.user_type_id
      and columns.default_object_id=default_constraints.object_id
    go

    結果は

    name name max_length definition

    test_column1 char 5 ['abcde']

    test_column2 char 3 ['xyz']

    で正常です。

    ただし、今度はtest_loginで入りなおし最後のselectを実行すると

    name name max_length definition

    test_column1 char 5 NULL

    test_column2 char 3 NULL

    とdefinitionがNULLになってしまいます、セキュリティ上の考慮にしても、definitionだけがNULLになるのは理解できません、理由の分かる方は教えて下さい。

    以上

    2006年4月4日 13:38

回答

  • Takahiro Matsumoto さん 原沢です

    早速の回答ありがとうございました、テストしたところうまく行きました。

    今作っているソフトはバージョン1がMSDE2000用でしたが、バージョン2でPostgreSQLとIBM DB2とOracleとMSSQL2005の対応版を作りました、その内の2005だけがこの問題に引っかかり、全く理解できないでいました、本当にありがとうございました。

    このソフトはインターネットhttp://www.mis.janis.or.jp/~harasawa/で公開していますので、よろしければ評価してみてください、尚、この問題に対しては、この部分のselectのみloginしなおして逃げています、バージョン3で今回の問題に対応する予定です。

    2006年4月5日 10:45

すべての返信

  • 松本です。こんにちは
    SQL Server 2005 からは定義を参照するのにも権限が必要になっています。

    grant VIEW DEFINITION on test_table to test_login

    のように VIEW DEFINITION 権限が付与されていると、定義をみられると思います。

    VIEW DEFINITION 権限
    http://msdn2.microsoft.com/ja-jp/library/ms175808(SQL.90).aspx

    2006年4月4日 15:37
  • Takahiro Matsumoto さん 原沢です

    早速の回答ありがとうございました、テストしたところうまく行きました。

    今作っているソフトはバージョン1がMSDE2000用でしたが、バージョン2でPostgreSQLとIBM DB2とOracleとMSSQL2005の対応版を作りました、その内の2005だけがこの問題に引っかかり、全く理解できないでいました、本当にありがとうございました。

    このソフトはインターネットhttp://www.mis.janis.or.jp/~harasawa/で公開していますので、よろしければ評価してみてください、尚、この問題に対しては、この部分のselectのみloginしなおして逃げています、バージョン3で今回の問題に対応する予定です。

    2006年4月5日 10:45