【问题标题】:SQL Query fails while running in SQLCMD Mode在 SQLCMD 模式下运行时 SQL 查询失败
【发布时间】:2020-11-12 16:34:45
【问题描述】:

我需要帮助,我正在编写如下所示的 SQL 代码,用于从一台 SQL Server 的 SSMS 窗口中从多台服务器中提取数据。我在 SERVER1 上有 CMC,也注册了 SERVER2,一切看起来都不错。

但我在这段代码中有一个问题:

:CONNECT SERVER1
USE [SOURCE_NAP]
SELECT [CUST_ID]
FROM [SOURCE_NAP].[dbo].[Customer] 
GO
EXCEPT

:CONNECT SERVER2
USE [NAP]
SELECT [CUST_ID]
FROM [NAP].[dbo].[Customer] 
GO

当我在上面使用:CONNECT 执行单个选择时,它工作正常,但是当我想在两个选择之间使用EXCEPT 显示输出时,我收到此错误:

Connecting to SERVER1...
Disconnecting connection from SERVER1...
Connecting to SERVER2...

消息 208,第 16 级,状态 1,第 1 行
无效的对象名称 'NNSW_NAP.dbo.[Customer]'

Disconnecting connection from SERVER2...

似乎在连接到另一个实例之前它会尝试与早期实例断开连接,因此会出现此错误。任何解决此问题的方法是否有任何替代方法可以从多个服务器查询数据,然后在它们之间使用EXCEPT/UNION 等???

谢谢

【问题讨论】:

  • 编写的代码会给你错误incorrect syntax near the keyword 'except'。你真的在运行什么代码?在任何情况下,您都不能跨批次执行单个查询(批次是在 SSMS 中由 go 分隔的事物)go 基本上意味着“将所有内容发送到 SQL Server 并等待响应”。跨度>

标签: sql-server tsql ssms sqlcmd


【解决方案1】:

不能通过在中间引入GO 来分隔批次。您应该将它们作为单个批次。

:connect SERVER1
SELECT [CUST_ID]
FROM [SOURCE_NAP].[dbo].[Customer] 
EXCEPT
:connect SERVER2
SELECT [CUST_ID]
FROM [NAP].[dbo].[Customer]
GO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多