如果名称是table / view / storedProcedure / trigger ....我可以使用T-sql语句检查;
我想返回包含2列Name,Type。
的1行我知道在information_schema.tables中,我可以找到Table_Name
是一个表还是一个视图。但如果是sp或触发器或函数则不行。
答案 0 :(得分:3)
Sys.all_objects table存储您需要的每个属性:
SELECT *
FROM sys.all_objects so
WHERE so.name = 'Something'
type_desc
将为您提供对象类型的描述,type
是对象类型对象类型
答案 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 ] )