如果名称是table / view / storedProcedure / trigger ....,我可以使用T-sql语句检查;

时间:2017-05-03 07:37:41

标签: sql sql-server tsql

如果名称是table / view / storedProcedure / trigger ....我可以使用T-sql语句检查;

我想返回包含2列Name,Type。

的1行

我知道在information_schema.tables中,我可以找到Table_Name是一个表还是一个视图。但如果是sp或触发器或函数则不行。

3 个答案:

答案 0 :(得分:3)

Sys.all_objects table存储您需要的每个属性:

SELECT * 
FROM   sys.all_objects so
WHERE  so.name = 'Something'

type_desc将为您提供对象类型的描述,type是对象类型对象类型

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

答案 1 :(得分:2)

是的,您可以使用object_id并传递不同的参数

例如,如果object_id('tablename','u')检查用户表是否存在

information_schema.tables中,您只能找到表,您必须查找其他视图,例如information_schema.views和存储过程的例程

以下是总类型

AF = Aggregate function (CLR)

C = CHECK constraint

D = DEFAULT (constraint or stand-alone)

F = FOREIGN KEY constraint

FN = SQL scalar function

FS = Assembly (CLR) scalar-function

FT = Assembly (CLR) table-valued function

IF = SQL inline table-valued function

IT = Internal table

P = SQL Stored Procedure

PC = Assembly (CLR) stored-procedure

PG = Plan guide

PK = PRIMARY KEY constraint

R = Rule (old-style, stand-alone)

RF = Replication-filter-procedure

S = System base table

SN = Synonym

SO = Sequence object



Applies to: SQL Server 2012 through SQL Server 2016.



SQ = Service queue

TA = Assembly (CLR) DML trigger

TF = SQL table-valued-function

TR = SQL DML trigger

TT = Table type

U = Table (user-defined)

UQ = UNIQUE constraint

V = View

X = Extended stored procedure

答案 2 :(得分:1)

您可以从DatabaseName.Sys.Objects中进行选择,其中Name就像您的搜索名称。或者您可以使用以下语法:

var result = eventDocuments.Join(events, 
                        doc => new { doc.ID1, doc.ID2 }, 
                        ev => new { cross.DocID1, cross.DocID2}, 
                        (doc, ev) => new { EventDocument = doc, Event = ev }); 

或者在yourdatabasename.sys.all_objects中。例如

OBJECT_NAME ( object_id [, database_id ] )