Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将sqlcmd与FOR XML一起使用会返回无效的对象名';dbo.表';然而,查询在SSM中运行_Sql Server_Sqlcmd_For Xml - Fatal编程技术网

Sql server 将sqlcmd与FOR XML一起使用会返回无效的对象名';dbo.表';然而,查询在SSM中运行

Sql server 将sqlcmd与FOR XML一起使用会返回无效的对象名';dbo.表';然而,查询在SSM中运行,sql-server,sqlcmd,for-xml,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 FR

这是我的疑问:

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文件作为文件输出。我已经能够通过在ServerManagementStudio中打开xml,然后运行VB脚本重新存储临时xml文件,然后将该xml移动到它的目标来实现这一点。嘿…我要做我该做的事让这些结果播出

在我的旅行中,我尝试使用sqlcmd来实现这一点。以下是我尝试运行的内容:

sqlcmd -S WQAD-SEVE\SQLEXPRESS -i C:\Users\localtv\Desktop\QUERIES\THISONE22 .sql -o C:\Users\localtv\Desktop\RESULTS236.xml
它执行,但当我打开/编辑它输出的XML文件时,我得到:

Msg 208,16级,状态1,服务器WQAD-SEVE\SQLEXPRESS,第1行 无效的对象名称“dbo.RACE”

我已尝试插入[database].dbo.RACE,但仍然遇到相同的问题。我已经为此工作了好几个星期了,我正试图找到一种方法让它发挥作用

另外,当我尝试在没有-o输出目标的情况下运行命令时,命令行会回显相同的错误消息。从我的查询来看,在遇到dbo.RACE之前,它已经完成了相当长的一段时间

有什么建议吗

提前感谢您宝贵的帮助


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

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

否则,只要对XML路径使用
,即使在脚本
FROM
子句中添加数据库名称,也会出现
无效对象名称“Table”
错误(即,即使
来自database.dbo.Table
也不会避免使用
-d
进行XML自动
)。奇怪

Re:它不会弹出格式正确的xml文件

您需要将作为输入(
-i
)文件的第一行添加到
sqlcmd

:XML ON
SELECT title1,
 ...

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

USE dbname;

SELECT ...

当它在SSMS中运行时,执行select
@@ServerName
-确保它是
WQAD-SEVE\SQLEXPRESS
?我已经解决了问题。我需要将-d[databasename]参数添加到我的sqlcmd中,但是,它不会输出格式正确的xml文件。比如XML路径。+1我刚才在SqlExpress 2008R2上重复了。没有
FOR XML PATH
就可以了,而
FOR XML PATH
给出了无效的对象名“table”。:XML ON…..刚刚完成了我那该死的一个月!这会将其作为提要所需的格式输出。完成第2步,共10步!!!斯图尔特……你救了我一瓶XANAX!是的+1我相信这个数据库上下文问题会影响所有XML方法(例如,XML路径的
),但是,和您一样,我无法解释为什么会是这样(就像查询被重新格式化为显式忽略表/视图名称上的数据库前缀,并在其他地方运行)。不过,您重现了这个问题的sqlcmd版本是什么?我无法使用2012客户端工具。我想是2008R2-我回家后会检查。