带有通配符的sp_help

时间:2010-04-16 14:16:37

标签: sql-server

SqlServer中有一个命令sp_help'table_name'(table_name或其他东西)

当你不知道整个表名时,是否有可能使用它,使用通配符或类似的东西:

  

sp_help admin_

编辑:

运行sp_help (SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_NAME like '%admin_%'),但结果很奇怪......

4 个答案:

答案 0 :(得分:3)

不,SP_HELP需要一个完整的名称,因此请先使用它来查找表名:

SELECT
    *
    FROM INFORMATION_SCHEMA.Tables
    WHERE TABLE_NAME like '%your table name guess here%'

然后您可以使用sp_help 'the_real_complete_name'

编辑基于OP的评论

您不需要记住查询,只需创建一个搜索对象名称的过程:

CREATE PROCEDURE [FO] 
    @SearchFor sysname=''
AS

SELECT
    name,type_desc
    FROM sys.objects 
    WHERE name like '%'+@SearchFor+'%'
    ORDER BY type,name
GO

现在就像使用它一样:

fo 'xyz'

exec fo 'xyz'

查找具有匹配名称的所有对象。这些是可以找到的对象类型:

AGGREGATE_FUNCTION
CHECK_CONSTRAINT
DEFAULT_CONSTRAINT
FOREIGN_KEY_CONSTRAINT
PRIMARY_KEY_CONSTRAINT
SQL_STORED_PROCEDURE
CLR_STORED_PROCEDURE
SQL_SCALAR_FUNCTION
CLR_SCALAR_FUNCTION
CLR_TABLE_VALUED_FUNCTION
RULE
REPLICATION_FILTER_PROCEDURE
SYNONYM
SERVICE_QUEUE
CLR_TRIGGER
SQL_TRIGGER
SQL_INLINE_TABLE_VALUED_FUNCTION
SQL_TABLE_VALUED_FUNCTION
USER_TABLE
UNIQUE_CONSTRAINT
VIEW
EXTENDED_STORED_PROCEDURE
INTERNAL_TABLE

这不是主题,但您也可以使用以下方法搜索存储过程,触发器,视图或函数中的任何文本:

CREATE PROCEDURE [FT]
    @Search varchar(255)
AS

SELECT DISTINCT
    o.name,o.type_desc
    FROM sys.sql_modules        m
        INNER JOIN sys.objects  o ON m.object_id=o.object_id
    WHERE m.definition Like '%'+@Search+'%'
    ORDER BY type_desc

GO

就像使用它一样:

ft 'fkgjfg'

exec ft 'fkgjfg'

答案 1 :(得分:1)

以下查询将为您提供与您想要的名称匹配的表格列表。

select * from INFORMATION_SCHEMA.Tables 
where TABLE_NAME like 'admin%'

然后,您可以对生成的表名执行sp_help

答案 2 :(得分:0)

doesn't look like it's meant to be used this way。我打赌这里的某个人会想出另一种方法!

答案 3 :(得分:0)

如果您尝试使用sp_help的功能实现特殊功能,则可以通过复制其源来创建自己的版本。 (sp_helptext sp_help