在SQL Server中正确检索表ID



这里的答案说信息是从sys.objects视图检索的。但是,这个视图只有schema的表名字段,它有schema_id。

它是否为object_id()函数使用自关联,或者它是否查询其他系统表/视图获取模式名称?

我不能直接使用object_id(),因为我的代码:

std::string query = "SELECT object_id(?)";

失败,因为在查询的SELECT子句中禁止绑定参数。

所以我需要编写实际的查询来检索它。

有人能帮帮我吗?

基本上我在找这样的东西:

SELECT object_id from sys.objects WHERE name = <table_name> AND schema = <schema_name>.

然而,我不知道我在哪里可以得到schema字段…

编辑:

看起来正确的查询应该是

SELECT object_id FROM sys.objects o, sys.schemas s WHERE s.schema_id = o.schema_id AND o.name = <table_name> AND s.name = <schema_name>

但试图运行它管理工作室我没有得到任何行。

所以,我发布的最后一个查询是正确的。

问题是我需要发出:

USE db_name;

因为很明显,即使我的ODBC字符串包含DB名称,我也必须显式地发出"USE"命令。

最新更新