sql server2000存储过程sp_droplogin
/* 打开修改系统表的开关 */
sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
存储过程如下:
create procedure sp_droplogin
@loginame sysname
as declare @exec_stmt nvarchar(890) -- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
set nocount on
declare @sid varbinary(85) /*Create temp tables before any DML to ensure dynamic*/
-- CREATE TEMPORARY TABLES FOR LATER USE --
create table #db_list (dbname sysname collate database_default not null, user_name sysname collate database_default not null)
create table #retval (job_count int not null) -- CHECK PERMISSIONS --
IF (not is_srvrolemember('securityadmin') = 1)
begin
dbcc auditevent (104, 2, 0, @loginame, NULL, NULL, NULL)
raiserror(15247,-1,-1)
return (1)
end
ELSE
begin
dbcc auditevent (104, 2, 1, @loginame, NULL, NULL, NULL)
end -- DISALLOW USER TRANSACTION --
set implicit_transactions off
IF (@@trancount > 0)
begin
raiserror(15002,-1,-1,'sp_droplogin')
return (1)
end -- VALIDATE LOGIN NAME (SQL LOGIN) --
select @sid = sid from master.dbo.syslogins
where loginname = @loginame and isntname = 0
if (@sid is null)
begin
raiserror(15007,10,-1,@loginame)
return(1)
end
-- CANNOT CHANGE SA ROLES --
else if @sid = 0x1 -- 'sa'
begin
raiserror(15405, -1 ,-1, @loginame)
return (1)
end -- CHECK IF @sid IS CURRENTLY LOGGED IN (ignore cached remote connections) --
if exists(select * from master.dbo.sysprocesses where sid = @sid and status != 'dormant')
begin
raiserror(15434, -1, -1, @loginame)
return(1)
end -- CHECK IF ANY DATABASES ARE OWNED BY LOGIN --
if exists(select * from master.dbo.sysdatabases where sid = @sid)
begin
raiserror(15174, -1, -1, @loginame)
select 'Databases owned by login:' = name
from master.dbo.sysdatabases where sid = @sid
return(1)
end -- COLLECT ALL INSTANCES OF USE OF THIS LOGIN IN SYSUSERS --
declare @dbname sysname
declare ms_crs_dbname cursor local keyset for select name from master.dbo.sysdatabases
open ms_crs_dbname
fetch ms_crs_dbname into @dbname
while @@fetch_status >= 0
begin
if (has_dbaccess(@dbname) = 1)
begin
select @exec_stmt = 'use ' + quotename( @dbname , '[') + '
insert into #db_list (dbname, user_name)
select N'+ quotename( @dbname , '''')+', name from sysusers
where sid = suser_sid(N' + quotename( @loginame , '''') + ') '
exec (@exec_stmt)
end
else
raiserror(15622,-1,-1, @dbname) fetch ms_crs_dbname into @dbname
end
deallocate ms_crs_dbname -- ERROR IF LOGIN USED AS USER IN ANY DATABASE --
if (select count(*) from #db_list) <> 0
begin
raiserror(15175,-1,-1,@loginame)
select
'Database name:' = dbname,
'User name:' = user_name,
'Mapping type:' = 'user'
from #db_list
order by dbname
return (1)
end -- VERIFY NO JOBS IN MSDB OWNED BY THIS LOGIN --
if db_id('msdb') is not null
and object_id('msdb.dbo.sp_check_for_owned_jobs') is not null
begin
exec msdb.dbo.sp_check_for_owned_jobs @loginame, '#retval'
if exists (select job_count from #retval where job_count > 0)
begin
declare @job_count int
select @job_count = job_count from #retval
raiserror(14248, -1, -1, @job_count)
return (1)
end
end -- DELETE THIS LOGIN (ALSO DELETES REMOTE LOGINS MAPPED TO IT) --
delete from master.dbo.sysxlogins where sid = @sid -- FINALIZATION: SUCCESS/FAILURE MESSAGE
if @@rowcount > 0
begin
-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE SYSLOGINS CHANGE --
exec('use master grant all to null') raiserror(15479,-1,-1)
return (0)
end
else
begin
raiserror(15007,10,-1,@loginame)
return (1)
end -- sp_droplogin GO
sql server2000存储过程sp_droplogin的更多相关文章
- sql server2000存储过程sp_password
create procedure sp_password @old sysname = NULL, -- the old (current) password @new sysname, -- the ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- SQL Server 存储过程、触发器、游标
存储过程 1.存储过程是事先编好的.存储在数据库中的程序,这些程序用来完成对数据库的指定操作. 2.系统存储过程: SQL Server本身提供了一些存储过程,用于管理有关数据库和用户的信息. 用户存 ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- MS SQL Server2000转换成MySQL
按计划今天着手进行将后台数据库从MS SQL Server2000转换成MySQL5.1.3.目的是便于发布软件的测试版本. 1. 驱动: mysql-connector-odbc-5.1.11-wi ...
- sql server 存储过程 output 和return的使用 方法,详解
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- SQL Server2000导出数据时包含主键、字段默认值、描述等信息
时经常用SQL Server2000自带的导出数据向导将数据从一台数据库服务器导出到另一台数据库服务器: 结果数据导出了,但表的主键.字段默认值.描述等信息却未能导出,一直没想出什么方法,今天又尝试了 ...
- SQL Server存储过程中使用表值作为输入参数示例
这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...
- 使用 ODBC .NET 提供程序和 Visual C# .NET 执行 SQL 参数化存储过程
http://support2.microsoft.com/kb/310130/zh-cn 此分步指导文章描述如何使用 ODBC .NET 托管提供程序和 Visual C# .Net 调用参数化 S ...
随机推荐
- BAT-Java必考面试题集
2018最新<BAT Java必考面试题集> 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象 ...
- HDU 2852 主席树
KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- C#学习之自定义数组及其排序
在C#中对数组的定义比较灵活.这里着重说一下自定义数组和Array类的排序. 在Array类中通过属性Length就可以获取整个数组中数据的数量,可以通过foreach迭代数组. 使用Rank属性可以 ...
- html 5 新特性
现在html 5技术是最新的html标准,掌握html 5已经变得非常重要,以下是我查看相关资料后对html 5 的新特性的总结,方便大家对比学习.html 5的新特性1.取消了一些过时的html 4 ...
- linux上抓包
使用tcpdump命令. 使用tcpdump -help查看其用法. -i eth0:在第一块网卡上进行抓包. -w filename.cap:将抓的保存到当前目录下的filename.cap文件中, ...
- leaflet一个前端gis框架,比openlayer更简单
leaflet一个前端gis框架,比openlayer更简单 作者github:https://github.com/mourner?tab=overview&from=2009-12-01& ...
- bzoj 1731: [Usaco2005 dec]Layout 排队布局 ——差分约束
Description 当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些.FJ有N(2<=N<=1000)头奶牛,编号从1到N,沿一条直线站着等候喂食.奶牛排在队伍中的顺序和它们的编号是相 ...
- 【51NOD-0】1019 逆序数
[算法]离散化+树状数组(求逆序对) [题解]经典,原理是统计在i之前插入的且值≤i的个数,然后答案就是i-getsum(i) #include<cstdio> #include<a ...
- Billboard HDU 2795 (线段树)
题目链接 Problem Description At the entrance to the university, there is a huge rectangular billboard of ...
- Centos服务器ssh免密登录以及搭建私有git服务器
一.概述 服务器的免密登录和git服务器的搭建,关键都是要学会把自己用的机器的公钥添加到服务器上,让服务器“认识”你的电脑,从而不需要输入密码就可以远程登录服务器上的用户 免密登录当然是登录root用 ...