目录

简介

先决条件

要求

使用的组件

表

SQL查询

列出与IP电话关联的所有DN

列出DN及其关联的IP电话

列出设备信息以及关联分区的DN

查找具有线路级别用户关联的电话

查找没有线路级别用户关联的电话

查找具有设备级用户关联的电话

简介

本文档提供可在CLI上运行的结构化查询语言(SQL)查询，以获取与IP电话关联的目录号码(DN)和分区以及任何最终用户关联。

先决条件

要求

思科建议您了解思科统一通信管理器(CUCM)。

使用的组件

本文档中的信息基于CUCM版本8.X及更高版本，但也可能适用于早期版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

表

SQL查询由以下表中的数据形成：

- 设备 — 此表包含设备级信息，如IP电话和网关。

- NumPlan — 此表包含有关CUCM中配置的所有模式的信息。

- DeviceNumPlanMap — 此表包含Device表和NumPlan表中数据之间的映射。

- RoutePartition — 此表包含有关CUCM中配置的所有分区的信息

- 最终用户 — 此表包含与最终用户相关的信息。

- DeviceNumPlanMapEndUserMap — 此表包含DeviceNumPlanMap表中的数据与EndUser表中的数据之间的映射。

- EndUserDeviceMap — 此表包含Device表和EndUser表中数据之间的映射。

有关这些表的详细信息，请参阅相应版本的CUCM数据字典。

SQL查询

编写查询是为了一次找到一个关联，以便更容易理解。

列出与IP电话关联的所有DN

以下查询旨在列出与IP电话关联的所有DN。

run sql select dnorpattern as dn from numplan where pkid IN(select fknumplan from

devicenumplanmap where fkdevice IN (select pkid from device where tkclass =

1)) order by dn

注意：tkclass = 1用于IP电话。dnorpattern是表编号计划中的一列，其中的DN与电话/寻线引导/VM端口/路由模式/CTI RP相关联。

列出DN及其关联的IP电话

以下是用于列出DN及其关联IP电话的查询。

run sql select d.name, d.description, n.dnorpattern as DN from device as d,

numplan as n, devicenumplanmap as dnpm where dnpm.fkdevice = d.pkid and

dnpm.fknumplan = n.pkid and d.tkclass = 1

name            description                  dn

=============== ============================ ====

SEP0026CBBFF47E Line 1 - 7031; Line 2 - 7011 7011

SEP0026CBBFF47E Line 1 - 7031; Line 2 - 7011 7031

SEPC89C1DA3A5A9 Line 1 - 8021                8021

SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1213

SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1212

SEP503DE57D7DAC 8501                         8501

SEP0008308B289A Line 1 - 8023                8023

SEP0008308BBEBD Line 1 - 8032; Line 2 - 8012 8012

SEP0008308BBEBD Line 1 - 8032; Line 2 - 8012 8032

如果添加tkmodel号以列出特定型号IP电话的详细信息，则可以修改查询。以下是IP电话型号7945的查询：

run sql select d.name, d.description, n.dnorpattern as DN from device as d,

numplan as n, devicenumplanmap as dnpm where dnpm.fkdevice = d.pkid and

dnpm.fknumplan = n.pkid and d.tkclass = 1 and d.tkmodel='435'

以下是获取所有IP电话型号tkmodel值的查询：

run sql select name,tkmodel from TypeProduct

注意：任何字段都可以过滤为仅包含所需信息。例如，为了根据DN进行过滤，请在查询末尾添加以下内容：n.dnorpattern比如“8%”。

此查询列出所有以8开头的DN条目。格式为其中<column name>如“<value>%”。

注意：可以向此查询添加一些提供有用信息(用户可读而不是主键标识符(PKID))的其他字段。在“run sql select”和“as DN”之间添加这些字段。以下是可以添加的字段：

d.tkmodel — 使用上一注释中描述的查询以获得每个模型的值。

d.tkdeviceprotocol — 对于瘦呼叫控制协议(SCCP)，值为0；对于会话发起协议(SIP)，值为11。

列出设备信息以及关联分区的DN

以下是用于列出设备信息以及关联分区的DN的查询。

run sql select d.name, d.description, n.dnorpattern as DN, rp.name as partition

from device as d, numplan as n, devicenumplanmap as dnpm, routepartition as rp

where dnpm.fkdevice = d.pkid and dnpm.fknumplan = n.pkid and rp.pkid =

n.fkroutepartition and d.tkclass = 1

name            description                  dn   partition

=============== ============================ ==== ===========

SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1212 Internal_PT

SEP503DE57D7DAC 8501                         8501 Internal_PT

SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1213 Internal_PT

SEP0008308B289A Line 1 - 8023                8023 Internal_PT

注意：此处未列出所有没有分区的DN。

随着在查询中添加的表越来越多，使用连接也变得更加容易。也可以编写上一个查询：

run sql select d.name, d.description, n.dnorpattern as DN, rp.name as partition

from device as d inner join devicenumplanmap as dnpm on dnpm.fkdevice = d.pkid

inner join numplan as n on dnpm.fknumplan = n.pkid inner join routepartition as

rp on n.fkroutepartition=rp.pkid and d.tkclass = 1

如果添加tkmodel号以列出特定型号IP电话的详细信息，则可以修改查询。对于IP电话型号7945,在查询末尾添加和d.tkmodel='435'。

要获取所有IP电话型号的tkmodel值，请输入：

run sql select name,tkmodel from TypeProduct

注意：任何字段都可以过滤为仅包含所需信息。例如，要根据DN进行过滤，请在查询末尾添加以下内容：其中n.dnorpattern类似于“8%”

此查询列出所有以8开头的DN条目。格式为其中<column name>如“<value>%”。

注意：可以向此查询添加一些提供有用信息（用户可读而非PKID）的其他字段。在“run sql select”和“as DN”之间添加这些字段。以下是可以添加的字段：

d.tkmodel — 使用上一注释中描述的查询以获得每个模型的值。

d.tkdeviceprotocol — 对于SCCP，值为0；对于SIP，值为11。

查找具有线路级别用户关联的电话

以下查询旨在查找具有线路级用户关联的电话。

run sql select eu.userid, d.name, d.description, n.dnorpattern as DN, rp.name as

partition from device as d inner join devicenumplanmap as dnpm on dnpm.fkdevice =

d.pkid inner join devicenumplanmapendusermap as dnpeum on dnpeum.fkdevicenumplanmap=

dnpm.pkid inner join enduser as eu on dnpeum.fkenduser=eu.pkid inner join numplan as

n on dnpm.fknumplan = n.pkid inner join routepartition as rp on n.fkroutepartition=

rp.pkid and d.tkclass = 1

userid       name            description   dn   partition

============ =============== ============= ==== ===========

AMavilakandy SEP0008308B289A Line 1 - 8023 8023 Internal_PT

此查询仅在DN位于分区中时提供信息。要将None Partition中包含这些分区，请输入：

run sql select eu.userid, d.name, d.description, n.dnorpattern as DN from device

as d inner join devicenumplanmap as dnpm on dnpm.fkdevice = d.pkid inner join

devicenumplanmapendusermap as dnpeum on dnpeum.fkdevicenumplanmap=dnpm.pkid inner

join enduser as eu on dnpeum.fkenduser=eu.pkid inner join numplan as n on dnpm.fknumplan

= n.pkid and d.tkclass = 1

如果添加tkmodel号以列出特定型号IP电话的详细信息，则可以修改查询。对于IP电话型号7945,在查询末尾添加和d.tkmodel='435'。

要获取所有IP电话型号的tkmodel值，请输入：

run sql select name,tkmodel from TypeProduct

有些其他字段提供有用的信息（用户可读而非PKID），可以添加到此查询。在“run sql select”和“as DN”之间添加这些字段。以下是可以添加的字段：

- eu.firstname

- eu.middlename

- eu.lastname

- eu.manager

- eu.department

- eu.telephonenumber

- eu.mailid

- eu.mobile

- eu.homephone

- eu.title

- d.tkmodel — 使用前面提到的查询来获取每个模型的值。

- d.tkdeviceprotocol — 对于SCCP，值为0；对于SIP，值为11。

注意：任何字段都可以过滤为仅包含所需信息。例如，要根据DN进行过滤，请在查询末尾添加以下内容：n.dnorpattern比如“8%”。

此查询列出所有以8开头的DN条目。格式为其中<column name>如“<value>%”。

查找没有线路级别用户关联的电话

以下查询旨在查找没有线路级用户关联的电话。

run sql select d.name, d.description, n.dnorpattern as DN, rp.name as partition

from device as d inner join devicenumplanmap as dnpm on dnpm.fkdevice = d.pkid

inner join devicenumplanmapendusermap as dnpeum on dnpeum.fkdevicenumplanmap!=

dnpm.pkid inner join numplan as n on dnpm.fknumplan = n.pkid inner join

routepartition as rp on n.fkroutepartition=rp.pkid and d.tkclass = 1

name            description                  dn   partition

=============== ============================ ==== ===========

SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1212 Internal_PT

SEP503DE57D7DAC 8501                         8501 Internal_PT

SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1213 Internal_PT

此查询仅在DN位于分区中时提供信息。要将None Partition中包含这些分区，请输入：

run sql select d.name, d.description, n.dnorpattern as DN from device as d inner

join devicenumplanmap as dnpm on dnpm.fkdevice = d.pkid inner join

devicenumplanmapendusermap as dnpeum on dnpeum.fkdevicenumplanmap!=dnpm.pkid

inner join numplan as n on dnpm.fknumplan = n.pkid and d.tkclass = 1

如果添加tkmodel号以列出特定型号IP电话的详细信息，则可以修改查询。对于IP电话型号7945,在查询末尾添加和d.tkmodel='435'。

要获取所有IP电话型号的tkmodel值，请输入：

run sql select name,tkmodel from TypeProduct

还有一些其他字段可以提供有用的信息（用户可读而非PKID），可以添加到此查询。在“run sql select”和“as DN”之间添加这些字段。以下是可以添加的字段：

- eu.firstname

- eu.middlename

- eu.lastname

- eu.manager

- eu.department

- eu.telephonenumber

- eu.mailid

- eu.mobile

- eu.homephone

- eu.title

- d.tkmodel — 使用前面提到的查询来获取每个模型的值。

- d.tkdeviceprotocol — 对于SCCP，值为0；对于SIP，值为11。

注意：任何字段都可以过滤为仅包含所需信息。例如，要根据DN进行过滤，请在查询末尾添加以下内容：n.dnorpattern比如“8%”。

这将列出DN以8开头的所有条目。格式为where <column name>如“<value>%”。

查找具有设备级用户关联的电话

以下是用于查找具有设备级用户关联的电话的查询。

run sql select eu.userid, d.name, d.description, n.dnorpattern as DN, rp.name as

partition from device as d inner join devicenumplanmap as dnpm on dnpm.fkdevice =

d.pkid inner join enduserdevicemap as eudm on eudm.fkdevice=d.pkid inner join

enduser as eu on eudm.fkenduser=eu.pkid inner join numplan as n on dnpm.fknumplan =

n.pkid inner join routepartition as rp on n.fkroutepartition=rp.pkid and d.tkclass = 1

userid       name            description                  dn   partition

============ =============== ============================ ==== ===========

AMavilakandy SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1212 Internal_PT

AMavilakandy SEPA40CC3956C5C Line 1 - 1213; Line 2 - 1212 1213 Internal_PT

AMavilakandy SEP0008308B289A Line 1 - 8023                8023 Internal_PT

此查询仅在DN位于分区中时提供信息。要将None Partition中包含这些分区，请输入：

run sql select eu.userid, d.name, d.description, n.dnorpattern as DN from device

as d inner join devicenumplanmap as dnpm on dnpm.fkdevice = d.pkid inner join

enduserdevicemap as eudm on eudm.fkdevice=d.pkid inner join enduser as eu on

eudm.fkenduser=eu.pkid inner join numplan as n on dnpm.fknumplan = n.pkid and

d.tkclass = 1

如果添加tkmodel号以列出特定型号IP电话的详细信息，则可以修改查询。对于IP电话型号7945,在查询末尾添加和d.tkmodel='435'。

要获取所有IP电话型号的tkmodel值，请输入：

run sql select name,tkmodel from TypeProduct

还有一些其他字段可以提供有用的信息（用户可读而非PKID），可以添加到此查询。在“run sql select”和“as DN”之间添加这些字段。以下是可以添加的字段：

- eu.firstname

- eu.middlename

- eu.lastname

- eu.manager

- eu.department

- eu.telephonenumber

- eu.mailid

- eu.mobile

- eu.homephone

- eu.title

- d.tkmodel — 使用前面提到的查询来获取每个模型的值。

- d.tkdeviceprotocol — 对于SCCP，值为0；对于SIP，值为11。

注意：任何字段都可以过滤为仅包含所需信息。例如，要根据DN进行过滤，请在查询末尾添加以下内容：n.dnorpattern比如“8%”。

这将列出DN以8开头的所有条目。格式为where <column name>如“<value>%”。