如何以编程方式确定存储过程是否从另一个数据库中选择?

时间:2010-02-17 19:37:07

标签: sql-server stored-procedures sql-server-2000

在MS SQL Server 2000安装中,我有许多存储过程从数据库中存储数据而不是存储数据。所有选择都发生在同一个数据库服务器上。例如:

select * from [OtherDatabase]..table

如何在没有眼球的情况下找到哪种程序做什么?

2 个答案:

答案 0 :(得分:4)

以下是存储过程,它将搜索任何存储过程中包含的文本。您可以使用它来搜索可能被调用的各种数据库。

CREATE PROCEDURE FindTextInSP
@StringToSearch varchar(100) 
AS 
   SET @StringToSearch = '%' +@StringToSearch + '%'
   SELECT Distinct SO.Name
   FROM sysobjects SO (NOLOCK)
   INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
   AND SO.Type = 'P'
   AND SC.Text LIKE @stringtosearch
   ORDER BY SO.Name
GO

答案 1 :(得分:1)

此代码是否会...您需要临时连接到其他服务器上的数据库?你需要成为'系统管理员'小组的成员才能工作......最重要的是......这可能是错的,随便指出这一点......

USE MASTER
GO

sp_addserver @server='AnotherSQLServer'
USE [AnotherSQLServer].Master
GO

IF EXISTS (SELECT name FROM [AnotherSQLServer].sysobjects WHERE name = 'some_proc' AND type = 'P') 
THEN
    ' DO WHAT YOU HAVE TO DO
    'DROP PROCEDURE some_proc
END
GO

USE MASTER
GO

sp_dropserver @server='AnotherSQLServer'