针对sql-server–如何查找存储过程何时被删除以及谁删除了它?和sql如何查看存储过程这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展mssqlsqlserver批量删除所有存储过程的
针对sql-server – 如何查找存储过程何时被删除以及谁删除了它?和sql如何查看存储过程这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展mssql sqlserver 批量删除所有存储过程的方法分享、SQL Server 2005 Profiler如何查看整个存储过程链、SQL Server sql 存储过程批量删除数据的语句、sql server 删除所有 视图、存储过程等相关知识,希望可以帮助到你。
本文目录一览:- sql-server – 如何查找存储过程何时被删除以及谁删除了它?(sql如何查看存储过程)
- mssql sqlserver 批量删除所有存储过程的方法分享
- SQL Server 2005 Profiler如何查看整个存储过程链
- SQL Server sql 存储过程批量删除数据的语句
- sql server 删除所有 视图、存储过程
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 批量删除所有存储过程的方法分享
转自: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 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 删除所有 视图、存储过程
--删除视图:
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 删除所有 视图、存储过程等相关知识的信息别忘了在本站进行查找喔。
本文标签: