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になるのは理解できません、理由の分かる方は教えて下さい。
以上