MSSQL DBA 精华总结 之查询使用了某个关键字的对象 背景在MSSQL DBA平时的工作中,经常会遇到下面的Case: 1. 请帮忙查看使用到表(或者对象)XXX的数据库对象有哪些? 2. 请帮忙查看UPDATE/DELETE/INSERT表(或者对象)XXX的数据库对象有哪些? 3. 查看有哪些对象引用到对象XXX? 可能开始的时候,我们遇到这样需求的时候,会不知所措,使用下面的脚本,可以很轻松的解决这个问题。 脚本- use master
- GO
- SET NOCOUNT ON
- --===========public variables
- declare
- @database_name sysname
- , @object_type sysname
- , @Search_key nvarchar(2000)
- ;
- select
- @database_name = 'test' -- NULL:all databases;
- , @object_type = 'V' -- NULL:all object_name types;P=proc,V=view,FN/TF/IF=Function
- , @Search_key = N'Test' -- the search content you wanted
- ;
-
- IF object_ID('tempdb.dbo.#temp','u') IS NOT NULL
- DROP TABLE #temp
- CREATE TABLE #temp(
- database_name sysname NULl,
- schema_name sysname NULL,
- object_name sysname NULL,
- object_type sysname NULL,
- create_date datetime NULL
- ,modify_date datetime NULL
- )
- ;
- --===========private variables
- DECLARE
- @sql nvarchar(2000)--because sp_msforeachdb support nvarchar(2000) only
- ;
- SELECT
- @sql = N'
- USE [?]
- -- USE [pubs] for example
- RAISERROR(N''Search on database: ?'', 10, 1) WITH NOWAIT
- INSERT #temp
- SELECT DB_NAME()
- , schema_name(o.schema_id)
- , O.name
- , O.type
- , O.create_date
- , O.modify_date
- FROM sys.objects O WITH(NOLOCK)
- INNER JOIN sys.sql_modules C WITH(NOLOCK)
- ON O.object_id = C.object_id
- WHERE
- O.type IN (''P'',''V'',''FN'',''TF'',''IF'')
- AND C.definition LIKE N''%' + @Search_key + N'%'''
- --for each database search
- EXEC sys.sp_msforeachdb @sql
- --show the resule
- SELECT DISTINCT
- database_name
- , schema_name
- , object_name
- , object_type = CASE object_type
- WHEN N'P' THEN 'Procedure'
- WHEN N'V' THEN 'View'
- ELSE 'User Function'
- END
- , create_date
- , modify_date
- , sp_helptext = database_name + '.' + schema_name + '.sp_helptext ' + object_name
- FROM #temp
- WHERE
- database_name = ISNULL(@database_name,database_name)
- AND object_type = ISNULL(@object_type,object_type)
- ORDER BY database_name, schema_name, object_name
复制代码 我的测试结果
database_name schema_name object_name object_type create_date modify_date sp_helptext
test dbo UV_Test View 2012-03-27 20:50:39.727 2012-03-27 20:50:39.727 test.dbo.sp_helptext UV_Test
|