修改SQL2000數(shù)據(jù)庫密碼報錯sp_password
在管理SQL Server 2000數(shù)據(jù)庫時,我們經(jīng)常需要修改sa賬戶的密碼。但是有時候,在執(zhí)行修改密碼操作時會出現(xiàn)報錯“sp_password”。下面我將介紹如何解決這個問題。解決辦法要解決“sp_
在管理SQL Server 2000數(shù)據(jù)庫時,我們經(jīng)常需要修改sa賬戶的密碼。但是有時候,在執(zhí)行修改密碼操作時會出現(xiàn)報錯“sp_password”。下面我將介紹如何解決這個問題。
解決辦法
要解決“sp_password”報錯問題,我們需要執(zhí)行以下步驟:
1. 打開企業(yè)管理器。
2. 點擊工具欄上的"SQL查詢分析器"。
3. 在查詢分析器中復(fù)制以下腳本,并點擊運行按鈕(綠色三角形)。
```sql
create procedure sp_password
@old sysname NULL, -- 舊密碼
@new sysname, -- 新密碼
@loginame sysname NULL -- 需要修改密碼的用戶
AS
BEGIN
-- 設(shè)置運行選項
-- set nocount on
declare @self int
select @self CASE WHEN @loginame is null THEN 1 ELSE 2 END
-- 解析登錄名
if @loginame is null
select @loginame suser_sname()
-- 檢查權(quán)限(SecurityAdmin)
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
-- 禁止用戶事務(wù)
-- set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,'sp_password')
return (1)
end
-- 解析登錄名(禁止NT名稱)
if not exists (select * from where loginname @loginame and isntname 0)
begin
raiserror(15007,-1,-1,@loginame)
return (1)
end
-- 如果非SYSADMIN嘗試修改SYSADMIN密碼,則需要輸入密碼(218078)
-- if (@self < 1 AND is_srvrolemember('sysadmin') 0 AND exists(SELECT * FROM WHERE loginname @loginame and isntname 0 AND sysadmin 1))
-- SELECT @self 1
-- 檢查舊密碼是否正確
if not exists (select * from 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
-- 修改密碼
update
set password convert(varbinary(256), pwdencrypt(@new)), xdate2 getdate(), xstatus xstatus (~2048)
where name @loginame and srvid IS NULL
-- 更新MASTER數(shù)據(jù)庫的保護(hù)時間戳,以指示SYSLOGINS已更改
-- exec('use master grant all to null')
-- 返回成功/失敗
-- if @@error <> 0 return (1)
raiserror(15478,-1,-1)
return (0)
END
```
4. 執(zhí)行以上腳本后,即可重新修改sa密碼。
總結(jié)
通過執(zhí)行上述步驟,您可以解決在SQL Server 2000中修改sa密碼時報錯"sp_password"的問題。確保按照操作順序逐步執(zhí)行腳本,并檢查是否成功修改了密碼。這將確保數(shù)據(jù)庫的安全性和可靠性。