当前位置:Gxlcms >
数据库问题 >
Sql Server 遍历数据库文件找出使用了某个表/存储过程的所有存储过程
Sql Server 遍历数据库文件找出使用了某个表/存储过程的所有存储过程
时间:2021-07-01 10:21:17
帮助过:2人阅读
CREATE Procedure SP_GetProc
2 @Object_Name Varchar(
50)
3 as
4 Set nocount
on
5
6 DECLARE @tmptable TABLE
7 (
8 ID
int IDENTITY (
1,
1),
9 [DataBase] Varchar(
100),
10 Name
Varchar(
500),
11 Type
Varchar(
100),
12 Create_Date
Datetime
13 )
14
15 DECLARE @SQLText TABLE
16 (
17 ID
int IDENTITY (
1,
1),
18 SQLText
Varchar(
Max)
19 )
20
21 if Charindex(
‘#‘,
@Object_Name)
> 0
22 begin
23 Select @Object_Name = replace(
@Object_Name,
‘#‘,
‘‘)
24
25 Insert Into @SQLText
26 Select ‘
27 Select ‘‘‘ + Name
+ ‘‘‘ [DataBase], CONVERT(VARCHAR(500), a.Name COLLATE Chinese_PRC_CI_AS) Name, a.Type, a.Create_Date
28 From ‘ + Name
+ ‘.sys.all_objects a
29 Where a.Name Like ‘‘%‘ + @Object_Name + ‘%‘‘‘
30 From sys.databases
where database_ID
> 4
31 end
32 else begin
33 Insert Into @SQLText
34 Select ‘
35 Select ‘‘‘ + Name
+ ‘‘‘ [DataBase], CONVERT(VARCHAR(500), a.Name COLLATE Chinese_PRC_CI_AS) Name, a.Type, a.Create_Date
36 From ‘ + Name
+ ‘.sys.all_objects a, ‘ + Name
+ ‘.sys.syscomments b
37 Where a.object_id = b.id and b.text Like ‘‘%‘ + @Object_Name + ‘%‘‘‘
38 From sys.databases
where database_ID
> 4
39 end
40
41 Declare @ID Int,
@MID Int,
@SQl Varchar(
Max)
42 Select @ID = 1,
@MID = MAX(ID)
From @SQLText
43 While @ID <= @MID
44 begin
45 Select @SQl = SQLText
From @SQLText Where ID
= @ID
46 Insert Into @tmptable Exec (
@SQl)
47 Select @ID = @ID + 1
48 end
49
50 Select * From @tmptable Order by ID
View Code
Sql Server 遍历数据库文件找出使用了某个表/存储过程的所有存储过程
标签: