【发布时间】:2016-04-21 08:33:19
【问题描述】:
是否有我可以加入的系统表,以便我可以查询以查找列标记为 ROWGUIDCOL 的所有表?
谢谢!
【问题讨论】:
-
希望这个链接对stackoverflow.com/questions/4849652/…有帮助
标签: sql sql-server
是否有我可以加入的系统表,以便我可以查询以查找列标记为 ROWGUIDCOL 的所有表?
谢谢!
【问题讨论】:
标签: sql sql-server
你可以像这样使用COLUMNPROPERTY():
SELECT COLUMNPROPERTY(OBJECT_ID(C.TABLE_NAME), c.COLUMN_NAME, 'IsRowGuidCol') AS IsRowGuidCol
, * FROM INFORMATION_SCHEMA.COLUMNS 作为 C WHERE COLUMNPROPERTY(OBJECT_ID(C.TABLE_NAME), c.COLUMN_NAME, 'IsRowGuidCol') = 1
【讨论】:
您可以使用此 sql 查询来实现您的目标。 Objects.Type = 'U' 是用户表。
SELECT O.name AS table_name,
C.name AS column_name
FROM sys.objects AS O
JOIN sys.columns AS C ON C.object_id = O.object_id
WHERE o.type = 'U'
AND C.is_rowguidcol = 1
【讨论】:
您可以将sys.columns 与COLUMNPROPERTY 一起使用:
SELECT DISTINCT OBJECT_NAME(object_id) AS tab_name
FROM sys.columns
WHERE COLUMNPROPERTY(object_id, name, 'IsRowGuidCol') = 1
CREATE TABLE MyTable(ID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID());
CREATE TABLE MyTable2(ID UNIQUEIDENTIFIER ROWGUIDCOL PRIMARY KEY
DEFAULT NEWSEQUENTIALID());
输出:
╔══════════╗
║ tab_name ║
╠══════════╣
║ MyTable2 ║
╚══════════╝
【讨论】:
COLUMNPROPERTY?做FROM sys.columns where is_rowguidcol = 1不是更简单吗?