GVKun编程网logo

sql-server – 如何查找存储过程何时被删除以及谁删除了它?(sql如何查看存储过程)

20

针对sql-server–如何查找存储过程何时被删除以及谁删除了它?和sql如何查看存储过程这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展mssqlsqlserver批量删除所有存储过程的

针对sql-server – 如何查找存储过程何时被删除以及谁删除了它?sql如何查看存储过程这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展mssql sqlserver 批量删除所有存储过程的方法分享、SQL Server 2005 Profiler如何查看整个存储过程链、SQL Server sql 存储过程批量删除数据的语句、sql server 删除所有 视图、存储过程等相关知识,希望可以帮助到你。

本文目录一览:

sql-server – 如何查找存储过程何时被删除以及谁删除了它?(sql如何查看存储过程)

sql-server – 如何查找存储过程何时被删除以及谁删除了它?(sql如何查看存储过程)

实际上,其中一个关键作业在执行时失败了.

在错误消息中,发现失败是因为它缺少存储过程.

现在,我如何找出存储过程何时受到用户的影响.我如何找出用户做了什么以及何时做到了?

解决方法

您获得了管理跟踪:
select * from fn_trace_getinfo(NULL)
where property=2
and traceid = 1

您将查看对象类型8727 Stored Procedure上类47 Object:Deleted Event Class的事件的管理跟踪:

select * from fn_trace_gettable('....trc',-1)
where EventClass = 47
and ObjectType=8727

管理跟踪会定期回收,并保留大约4-5条跟踪,您应该使用仍然存在的最旧的trc文件的名称.

如果程序很关键,那么DBA应确保只有经过授权的人员可以修改或删除它.它应该对模式更改进行审计.这不是谁丢弃程序的错,而是完全是DBA的错误.

mssql sqlserver 批量删除所有存储过程的方法分享

mssql sqlserver 批量删除所有存储过程的方法分享

转自:http://www.maomao365.com/?p=6864

摘要:
下文讲述采用sql脚本批量删除所有存储过程的方法,如下所示:
实验环境:sqlserver 2008 R2


平常使用sql脚本,删除存储过程,我们只可以使用删除命令一条一条的删除存储过程,下文介绍一种简便方法,可以对系统中所有的存储过程进行删除,
<span>
实现思路:
1 采用临时表将存储过程名称缓存
2 通过循环临时表,输出删除存储过程脚本
3 执行脚本

declare @t table(keyId int identity(1,1),tableName varchar(256))
----生成临时表
insert into @t(tableName) 
select [name] from sysobjects where type=P

declare @i int @iMax int,@info varchar(256)
set @i =1 
select @imax=max(keyId) from @t as t

while @i <@imax
begin
select @info = t.tableName from @t as t where t.keyId =@i

if @info is not null 
begin
exec (drop proc +@info) ---遍历删除存储过程
end 

set @i = @i+1 
set @info =null 
end

SQL Server 2005 Profiler如何查看整个存储过程链

SQL Server 2005 Profiler如何查看整个存储过程链

sql Server 2005 Profiler显示已调用存储过程(SP)以及传递了哪些变量.但是我不知道如何让探查器向我显示后续调用.我的意思是当SP A呼叫SP B而SP B呼叫SP C.

有没有办法让探查器显示这个链?

谢谢

解决方法

您可以启用 SP:StmtCompleted事件以查看过程中的每个语句,包括对其他过程的调用.请注意,这是非常繁重的跟踪,应该专门用于调试目的,而不是在实时服务器上.

SQL Server sql 存储过程批量删除数据的语句

SQL Server sql 存储过程批量删除数据的语句

感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!

代码如下:

 
Create PROCEDURE Batch_Delete 
@TableName nvarchar(100),--表名 
@FieldName nvarchar(100),--删除字段名 
@DelCharIndexID nvarchar(1000) 
as 
DECLARE @PointerPrev int 
DECLARE @PointerCurr int 
DECLARE @TId NVARCHAR(50),@sql NVARCHAR(1000) 

Set @PointerPrev = 1 
while (@PointerPrev < LEN(@DelCharIndexID)) 
Begin 
Set @PointerCurr = CharIndex(',',@DelCharIndexID,@PointerPrev) 
if(@PointerCurr>0) 
Begin 
SET @TId = cast(SUBSTRING(@DelCharIndexID,@PointerPrev,@PointerCurr - @PointerPrev) As NVARCHAR(50)) 
SET @sql = 'Delete From '+ @TableName +' Where '+ @FieldName + ' = '''+ @TID+'''' 
Exec(@sql) 
Print('======='+@TId+'=======sql'+@sql) 
SET @PointerPrev = @PointerCurr + 1 
Print(@PointerPrev) 
End 
else 
Begin 
Print('break') 
Break 
End 
End 
--删除最后一个,因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除 
SET @TId = cast(SUBSTRING(@DelCharIndexID,LEN(@DelCharIndexID) - @PointerPrev + 1) As NVARCHAR(50)) 
SET @sql = 'Delete From '+ @TableName +' Where '+ @FieldName + ' = '''+ @TID+'''' 
Exec(@sql) 
Print('======='+@TId+'=======sql'+@sql) 
GO 

sql server 删除所有 视图、存储过程

sql server 删除所有 视图、存储过程

--删除视图:

declare mycur cursor local for select [name] from dbo.sysobjects where xtype=''V''  --声明游标
declare @name varchar(100) 
  
OPEN mycur    --打开游标
  
FETCH NEXT from mycur into @name
  
WHILE @@FETCH_STATUS = 0  
  
BEGIN 
exec(''drop VIEW '' + @name) 
FETCH NEXT from mycur into @name   --逐条读取
END 
  
CLOSE mycur   --关闭游标

 

--删除存储过程:



declare mycur cursor local for select [name] from dbo.sysobjects where xtype=''P''
declare @name varchar(100) 
  
OPEN mycur 
  
FETCH NEXT from mycur into @name
  
WHILE @@FETCH_STATUS = 0  
  
BEGIN 
exec(''drop PROCEDURE '' + @name) 
FETCH NEXT from mycur into @name
END 
  
CLOSE mycur

 

关于sql-server – 如何查找存储过程何时被删除以及谁删除了它?sql如何查看存储过程的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于mssql sqlserver 批量删除所有存储过程的方法分享、SQL Server 2005 Profiler如何查看整个存储过程链、SQL Server sql 存储过程批量删除数据的语句、sql server 删除所有 视图、存储过程等相关知识的信息别忘了在本站进行查找喔。

本文标签: