使用带有FOR XML的sqlcmd会返回无效的对象名称'dbo.Table',但查询在SSMS中运行

use*_*661 3 sql-server sqlcmd for-xml

这是我的查询:

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')
Run Code Online (Sandbox Code Playgroud)

此查询运行并产生一些我想要的结果.我试图将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
Run Code Online (Sandbox Code Playgroud)

它执行,但当我打开/编辑它输出的XML文件时,我得到:

消息208,级别16,状态1,服务器WQAD-SEVE\SQLEXPRESS,第1行无效的对象名称'dbo.RACE'.

我试过插入[database] .dbo.RACE,但仍遇到同样的问题.我已经在这方面工作了几个星期,我正试图找到一种方法来实现这一点.

此外,当我尝试在没有-o输出目标的情况下运行命令时,命令行会回显相同的错误消息.从我的查询的外观来看,它在遇到dbo.RACE之前会经历相当多的事情.

有什么建议?

提前感谢您的宝贵帮助.

***我删除了[databasename]和.dbo.同样,仍将RACE显示为无效对象.

Stu*_*tLC 7

正如您所发现的那样,我确认您需要指定-d MyDatabaseName选项.

否则,即使在脚本子句中添加数据库名称(即使不会避免使用),您也会在invalid object name "Table"使用时立即收到错误.离奇.FOR XML PATHFROMFROM Database.dbo.Table-dFOR XML AUTO

Re:它没有踢出格式正确的xml文件:

您需要将:XML ONinput(-i)文件中的第一行添加到sqlcmd:

:XML ON
SELECT title1,
 ...
Run Code Online (Sandbox Code Playgroud)

  • :XML ON .....刚刚成为我疯狂的一个月!这将输出为我的Feed所需的格式.第2步完成了10 !!! StuartLC ....你救了我一瓶XANAX!YESSSSS! (2认同)