【发布时间】:2014-01-30 03:15:34
【问题描述】:
这是我的查询:
SELECT title1,
[precinct percent] AS [PrecinctPercent],
leader,
[leader percent] AS [LeaderPercent],
Winner,
WinningVotes,
leader2,
[leader2 percent] AS [Leader2Percent],
Loser,
LosingVotes
FROM [leader].dbo.[RACE] r inner join
(select rc.[race number],
max(case when seqnum = 1 then [candidate num] end) as Winner,
max(case when seqnum = 1 then Votes end) as WinningVotes,
max(case when seqnum = 2 then [candidate num] end) as Loser,
max(case when seqnum = 2 then Votes end) as LosingVotes
from (select rc.*,
row_number() over (partition by rc.[race number] order by votes desc) as seqnum
from [leader].dbo.[RACE CANDIDATES] rc
) rc
group by rc.[race number]
) rc
on r.[race number] = rc.[race number]
FOR XML PATH ('WQAD'), ROOT('root')
这个查询运行并产生一些我想要的结果。我正在尝试将 XML 文件作为文件输出。我已经能够通过在 Server Management Studio 中打开 xml 来完成此操作,然后运行 VB 脚本来重新生成临时 xml 文件,然后将该 xml 移动到它的目的地。嘿...我必须做我必须做的事情才能在 AIR 上获得这些结果。
在我的旅行中,我尝试使用 sqlcmd 来实现这一点。这是我要运行的内容:
sqlcmd -S WQAD-SEVE\SQLEXPRESS -i C:\Users\localtv\Desktop\QUERIES\THISONE22 .sql -o C:\Users\localtv\Desktop\RESULTS236.xml
它执行,但是当我打开/编辑它输出的 XML 文件时,我得到:
消息 208,级别 16,状态 1,服务器 WQAD-SEVE\SQLEXPRESS,第 1 行 无效的对象名称“dbo.RACE”。
我尝试插入 [database].dbo.RACE,但仍然遇到同样的问题。我已经为此工作了好几个星期,并试图找出一种方法来让它发挥作用。
另外,当我尝试在没有 -o 输出目标的情况下运行命令时,命令行会回显相同的错误消息。从我的查询来看,它在遇到 dbo.RACE 之前完成了相当长的一段时间。
有什么建议吗?
提前感谢您的宝贵帮助。
***我已删除 [databasename] 和 .dbo。同样,仍将 RACE 显示为无效对象。
【问题讨论】:
-
当它在 SSMS 中运行时,选择
@@ServerName- 确保它是WQAD-SEVE\SQLEXPRESS? -
我已经解决了这个问题。我需要将 -d [databasename] 参数添加到我的 sqlcmd,但是,它不会踢出格式正确的 xml 文件。比如 FOR XML PATH。
-
+1 我刚刚在 SqlExpress 2008R2 上重复了一遍。没有
FOR XML PATH工作正常,FOR XML PATH给出无效的对象名称“表”。
标签: sql-server sqlcmd for-xml