1

사용자 정의 데이터 형식이있는 SQL Server 2005에서 실행되는 DB가 있습니다. 사용자 정의 데이터 형식은 모델 데이터베이스에도 구현되어 있으므로 임시 테이블을 만들 때 동일한 사용자 정의 데이터 형식을 사용할 수 있습니다.SQL Server 2005 사용자 정의 데이터 형식, tempdb 및 사용 권한

CREATE TYPE [dbo].[ product_code] FROM [varchar](8) NULL 

그리고 모델의 동일한 : 나는 정의이 데이터 타입이 AppDB에 예를 들어

,

CREATE TYPE [dbo].[ product_code] FROM [varchar](8) NULL 

내가 찾은 내 데이터베이스 인스턴스에 보안 로그인이있는 경우 그 sysadmin 서버 역할을 사용하면 사용자가 product_code 데이터 유형을 사용하여 tempdb에 테이블을 만드는 저장 프로 시저를 호출하는 데 문제가 없지만 응용 프로그램 보안 로그인에서 sysadmin을 제거하면 저장 프로 시저 호출이 실패합니다.

사용자 정의 데이터 유형을 전체 varchar 시스템 데이터 유형으로 바꾸면 동일한 저장 프로 시저 호출이 성공합니다.

보안상의 이유로 sysadmin 서버 역할을 응용 프로그램 보안 로그인에 추가하지 않습니다. 사용자 정의 데이터 형식을 계속 사용하려면 어떤 옵션이 있습니까? SQL Server 2008에서는 이러한 옵션이 변경됩니까?

특히 역할에 부여 된 권한 외에 어떤 권한이 필요합니까? 모든 저장 프로 시저를 편집해야하는 대답은 응답하지 않는 것으로 간주됩니다.

+0

사용자에게 AppDB에있는 권한은 무엇입니까? 예 : 해당 데이터 형식의 * local * 테이블을 만들 수 있습니까? –

+1

또한이 블로그 게시물을 유용하게 사용할 수 있습니다. 유형 별 문서는 별칭 유형을 사용하여 시행하기보다 장기적으로 번거롭게 될 것입니다. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/14/bad-habits-to-kick-using-alias-types.aspx –

+0

문서 링크를 제공해 주셔서 감사합니다. 보내 주셨습니다. 검토를 위해 시스템 설계자에게 알려줍니다. 방금 db_ddladmin 고정 사용자 역할에 사용자를 추가했는데 문제가 해결되었습니다. 이것이 올바른 일입니까? 나는 sysadmin 역할에 사용자를 추가하는 것보다 낫다고 생각합니다. 그러나 나는이 물건에 대해 많이 알지 못한다는 것을 인정합니다. –

답변

1

(별칭 일명) 사용자 정의 데이터 형식의 문제와 tempdb에는 사용자 정의 데이터 형식이 제대로 여기에 완료되었습니다로 인 모델 데이터베이스에 정의해야한다는 처음이다 . 그러나 이러한 개체를 조작 할 수있는 권한을 부여해야합니다.이를 수행하는 합리적인 방법은 모델에 db_ddladmin 역할 구성원 자격을 부여하는 것입니다. SQL Server 서비스가 다시 시작되면 tempdbdb_ddladmin 역할 구성원을 "상속"합니다. SQL Server를 다시 시작하는 것이 바람직하지 않은 경우에는 db_ddladmin 역할 구성원 자격을 응용 프로그램 사용자의 tempdb에 직접 부여하십시오.

는 "MyAppUser"라는 사용자의 모델에 프로그래밍 db_ddladmin을 역할을 추가하려면 :

USE [model] 
GO 
EXEC sp_addrolemember N'db_ddladmin', N'MyAppUser' 
GO 

은 매우 명확하게하기 위해, db_ddladmin을 고정 사용자 역할은 응용 프로그램에 추가 할 필요가 없습니다 db, 모델에만 적용됩니다.

-1

tempdb에 uddt를 만들 필요가 없습니다. 당신이 당신의 임시 테이블의 데이터 유형과 일치 할 경우, 사용

select fieldx, fieldy into #temptable from sourcetable 

또는 사용 :

declare @fieldx product_code 

select @fieldx into #temptable 

필드 크기가 일치하고 어떤 권한 문제가 없는지 그런 식으로.

tempdb에 영구 테이블을 만들려면 ...이 조언은이 테이블에 대한 특정 데이터베이스를 만드는 것입니다.