我正在尝试获取表和列信息。所以我写了两个这样的查询:
SELECT * FROM Chag.sys.columns c
WHERE OBJECT_NAME(c.object_id)='Aduser'
SELECT * FROM Chag.sys.tables so
WHERE so.name = 'Aduser' AND SCHEMA_NAME(so.schema_id) = 'Tref'
当我在 Chag 数据库中执行它们时,这两个工作正常,但是当我在不同的数据库中执行它们时,它们不返回任何内容。
我想在不同的数据库中执行它们,那么我该怎么做?
最佳答案
OBJECT_NAME()
函数接受数据库 ID 的附加参数。至于SCHEMA_NAME()
,您可能应该将其替换为 OBJECT_SCHEMA_NAME()
,它相当于 SCHEMA_NAME()
,只是它使用对象 ID 而不是架构 ID,并且也接受数据库 ID 作为第二个(可选)参数。
您可以使用DB_ID()
获取指定数据库的ID。
以下是您的陈述的修改版本:
SELECT *
FROM Chag.sys.columns c
WHERE OBJECT_NAME(c.object_id, DB_ID('Chag'))='Aduser'
SELECT *
FROM Chag.sys.tables so
WHERE so.name = 'Aduser'
AND OBJECT_SCHEMA_NAME(so.object_id, DB_ID('Chag')) = 'Tref'
关于sql - 获取对象信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7809371/