3

这是我的查询:

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 显示为无效对象。

4

2 回答 2

7

正如您发现并确认的那样,您需要指定该-d MyDatabaseName选项。

否则,即使您在脚本子句中添加数据库名称,您也会在invalid object name "Table"使用时立即收到错误消息(即,甚至不会规避对with的需要)。奇怪。FOR XML PATHFROMFROM Database.dbo.Table-dFOR XML AUTO

回复:它不会踢出格式正确的 xml 文件

您需要将输入 ( ) 文件中:XML ON的第一行添加到:-isqlcmd

:XML ON
SELECT title1,
 ...
于 2014-01-30T04:09:14.373 回答
0

有点晚了,但在 SQL 脚本中,只需在查询之前添加以下内容:

USE dbname;

SELECT ...
于 2015-05-11T09:49:23.650 回答