나는 4 개의 열이있는 SQL Server 테이블을 가지고 있는데, 그 중 하나는 기본값이 getdate()
인 datetime 열입니다. 나는이 테이블의 복사본을 두 개 가지고있다. 하나는 개발 데이터베이스 서버에 있고, 다른 하나는 권한이 거의없는 프로덕션 데이터베이스 서버에있다. 여기SQL Server 열이 작동하더라도 기본값이없는 것으로 나타나는 이유는 무엇입니까?
은 개발 테이블 모습입니다 :
나는 dtInsert 열을 선택했습니다. 이 열의 기본값은 getdate()
입니다. 이 표의 제작 버전은 완전히 동일합니다. 이 테이블에 행을 추가하면 dtInsert 셀의 기본값은 getdate()
입니다. 데이터베이스 관리자가 프로덕션 테이블의 스크립트를 생성하면 디폴트 값 제한 조건이 포함됩니다. 그러나 SQL Server Management Studio 2012에서 테이블 디자인을 볼 때이 열은 기본값이없는 것으로 표시됩니다. 여기를 참조하십시오 :
나는 데이터베이스 다이어그램을 생성, 또한 기본값이없는 것처럼 dtInsert 열을 보여줍니다. 다시 말하지만 실제로 프로덕션 데이터베이스 서버의 dtinsert 열의 기본값은 getdate()
입니다.
SQL Server Management Studio 버전 2012에서이 버그가 있습니까? 이 행동에 대해 어떤 권한이 있습니까? 다른 것입니까? 왜 열에도 기본값이없는 것처럼 보이는 이유는 무엇입니까?
내 생각 엔 사용 권한 문제인데 확실하지 않은 사용 권한입니다. 나의 google-fu는 지금 충분히 강하지 않다. – Kritner
기본값을 확인하려면 개체에 대한 DDL 권한이 필요하다고 생각합니다. db_owner 또는 db_ddladmin이 수행합니다. –
열은 볼 수 있지만 구속 조건은 볼 수 없다는 것이 이상하게 보입니까? 이것을보십시오 :'SELECT * FROM sys.default_constraints WHERE [parent_object_id] = OBJECT_ID (N'_table_name _ ');'두 환경 모두에서 diff가 있는지 확인하십시오. 그것이 prod에 DEFAULT를 반환하면 SSMS에 문제가 될 수 있습니다. 행이 없다면 권한이다. 대부분 VIEW DEFINITION이다. –