多个数据库的Count语句问题

时间:2009-04-16 15:38:34

标签: sql

对不起大家。看来我是个笨蛋!当我针对实时数据库而不是我的测试数据库运行它时,查询工作正常...需要更多关注这些东西!

我对下面显示的语句有疑问。如果我在一个数据库(没有DBCATALOG.dbo)上运行它,它工作正常,所以没有问题。当我尝试按原样运行语句时,我在'<'附近得到的语法不正确。 我还尝试使用工具为我们所有的数据库创建一个联合(参见第二个语句)。这导致无效的对象名称错误(无效的对象名称'TF7-User-Demo-ScheduledRestore-03.dbo.LinkedDocumentFolderTable',无效的对象名称'TF7-TestDatabase-ScheduledRestore.dbo.LinkedDocumentFolderTable'等)。 它似乎与。[dbo]有关,但我不知道导致问题的原因。我在书中找不到任何说明不能在多个数据库中执行计数的内容......

SELECT CNT=COUNT(*)
FROM <DBCATALOG>.[dbo].[LinkedDocumentFolderTable]
WHERE IsUnmanagedFolder = 1


SELECT 'TF7-User-Demo-ScheduledRestore-03' AS DBCatalog, * FROM(SELECT COUNT(*)
FROM [TF7-User-Demo-ScheduledRestore-03].[dbo].[LinkedDocumentFolderTable]
WHERE IsUnmanagedFolder = 1)rsOne

UNION ALL

SELECT 'TF7-TestDatabase-ScheduledRestore' AS DBCatalog, * FROM(SELECT COUNT(*)
FROM [TF7-TestDatabase-ScheduledRestore].[dbo].[LinkedDocumentFolderTable]
WHERE IsUnmanagedFolder = 1)rsOne

3 个答案:

答案 0 :(得分:1)

你的语法似乎很奇怪。尝试下一步:

SELECT 'TF7-User-Demo-ScheduledRestore-03' AS DBCatalog, COUNT(*) 
FROM [TF7-User-Demo-ScheduledRestore-03].[dbo].[LinkedDocumentFolderTable] 
WHERE IsUnmanagedFolder = 1

您是否还拥有所有必要的权限? (我最好不要问,你在同一台服务器上有TF7-User-Demo-ScheduledRestore-03这样的数据库吗?)

答案 1 :(得分:0)

我不完全确定你实际上要做什么,但是那些角度(&lt;&gt;)和square([])括号在查询中无效。

您使用的是哪个数据库引擎?

答案 2 :(得分:0)

SQL Server的引用标识符是您在其他地方使用的括号(“[”和“]”),而不是“&lt;”和“&gt;”,所以我猜这就是你得到第一个错误的原因。

数据库实际上是否命名为TF7-User-Demo-ScheduledRestore-03等?

此外,从子查询中进行选择时,如果子查询中没有列名,则需要确保子查询中的所有列都有别名。例如:

(SELECT COUNT(*) AS my_count)