|
커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
|
|
|
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
기강 손님
|
올려짐: 2011.8.23 화, 4:54 pm 주제: sql 바보입니다.... |
|
|
create procedure sp_password > @old sysname = NULL, -- the old (current) password > @new sysname, -- the new password > @loginame sysname = NULL -- user to change password on > as > -- SETUP RUNTIME OPTIONS / DECLARE VARIABLES -- > set nocount on > declare @self int > select @self = CASE WHEN @loginame is null THEN 1 ELSE 2 END > > -- RESOLVE LOGIN NAME > if @loginame is null > select @loginame = suser_sname() > > -- CHECK PERMISSIONS (SecurityAdmin per Richard Waymire) -- > IF (not is_srvrolemember('securityadmin') = 1) > AND not @self = 1 > begin > dbcc auditevent (107, @self, 0, @loginame, NULL, NULL, NULL) > raiserror(15210,-1,-1) > return (1) > end > ELSE > begin > dbcc auditevent (107, @self, 1, @loginame, NULL, NULL, NULL) > end > > -- DISALLOW USER TRANSACTION -- > set implicit_transactions off > IF (@@trancount > 0) > begin > raiserror(15002,-1,-1,'sp_password') > return (1) > end > > -- RESOLVE LOGIN NAME (disallows nt names) > if not exists (select * from master.dbo.syslogins where > loginname = @loginame and isntname = 0) > begin > raiserror(15007,-1,-1,@loginame) > return (1) > end > > -- IF non-SYSADMIN ATTEMPTING CHANGE TO SYSADMIN, REQUIRE PASSWORD (218078) -- > if (@self <> 1 AND is_srvrolemember('sysadmin') = 0 AND exists > (SELECT * FROM master.dbo.syslogins WHERE loginname = @loginame and > isntname = 0 > AND sysadmin = 1) ) > SELECT @self = 1 > > -- CHECK OLD PASSWORD IF NEEDED -- > if (@self = 1 or @old is not null) > if not exists (select * from master.dbo.sysxlogins > where srvid IS NULL and > name = @loginame and > ( (@old is null and password is null) or > (pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END)) > = 1) ) ) > begin > raiserror(15211,-1,-1) > return (1) > end > > -- CHANGE THE PASSWORD -- > update master.dbo.sysxlogins > set password = convert(varbinary(256), pwdencrypt(@new)), xdate2 = getdate(), xstatus = xstatus & > (~2048) > where name = @loginame and srvid IS NULL > > -- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE -- > exec('use master grant all to null') > > -- FINALIZATION: RETURN SUCCESS/FAILURE -- > if @@error <> 0 > return (1) > raiserror(15478,-1,-1) > return (0) -- sp_password > >
다른곳에서 sp_passwod관련 찾다가 찾은 프로시저생성문인데
쿼리실행기로 입력하니까 문구에 오류있다고 나오네요 ㅠ.ㅠ
틀린부분 수정좀 부탁드려도 될까요~
생성문 출처
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=38&MAEULNO=16&no=61855&ref=61855 |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 있습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB © 2001, 2005 phpBB Group
|