SQL Server를 사용하기 위해 SQL Server 역할에 연결된 사용자 응용 프로그램 보안에 사용 된 응용 프로그램의 시스템 카탈로그를 업데이트 한 SQL Server 2000의 일부 저장 프로 시저가있었습니다 내장 보안 및 NT 로그인저장 프로 시저의 시스템 카탈로그 업데이트
우리는 SQL Server 2008로 DB 마이그레이션 우리는 SQL Server 2008의 오류를 시스템 카탈로그에
임시 업데이트를이 저장 프로 시저를 사용할 수 없습니다를 실행하려고하면.
전 검색 한 결과 SQL Server 2005 이후부터는 MS가 카탈로그 업데이트를 지원하지 않는다는 점을 발견했습니다 (DAC (Dedicated Administrator Connection)를 사용하지 않는 한).
누구나 새 버전이나 다른 대안 (SQL Server에서 실행되는 .Net 코드와 같이)을 수행하는 방법을 알려 주시면 큰 도움이됩니다.
update sysusers
set roles = convert(varbinary(2048), substring(convert(binary(2048), roles), 1, @ruidbyte-1)
+ convert(binary(1), ([email protected]) & substring(convert(binary(2048), roles), @ruidbyte, 1))
+ substring(convert(binary(2048), roles), @ruidbyte+1, [email protected])),
updatedate = getdate()
where uid = @memuid
delete from syspermissions where grantee = @uid
delete from sysusers where uid = @uid
insert into sysusers
values(@uid, 0, @rolename, NULL, 0x00, getdate(), getdate(), @owner, NULL)
기본적으로 시스템 카탈로그 **보기 ** (SQL Server 2005/2008 이상)는 읽기 전용보기로 시스템 테이블에 저장됩니다. 이러한 시스템 테이블은 일반 코드 (T-SQL 또는 SQL-CLR)로 편집 할 수 없습니다.이러한 작업을 수행하기 위해'CREATE USER' 나'DROP USER'와 같은 공개 된 "공식적인"API를 사용할 필요가 있습니다 - 시스템 카탈로그 뷰는 자동으로 업데이트됩니다. –
@marc_s와 동의합니다 - 문서화되고 지원되는 방법을 사용하여 구현하십시오 보안. –