You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sqlcmd执行SQL脚本遇'schema.Table'无效对象名问题求助

解决sqlcmd执行脚本时"Invalid object name 'schema.Table'"的问题

你遇到的问题是SQL脚本在SSMS中可正常执行,但通过sqlcmd运行时抛出以下错误:

10:17:42 Msg 208, Level 16, State 1, Server TOM, Line 717
10:17:42 Invalid object name 'schema.Table'.

核心原因通常是数据库上下文不一致或连接参数缺失,以下是具体解决方法:

1. 显式指定目标数据库

在脚本开头添加USE语句,强制切换到存放schema.Table的目标数据库:

USE YourTargetDatabase; -- 替换为实际数据库名
IF EXISTS (SELECT * 
           FROM INFORMATION_SCHEMA.TABLES 
           WHERE TABLE_SCHEMA = 'schema' AND TABLE_NAME = 'Table')
    BEGIN TRANSACTION
        UPDATE schema.Table
        SET    description = @latestDescription
        WHERE  id = 'id' AND latest=1 AND description = @previousDescription

        -- 后续日志插入、事务提交等逻辑保持不变
     COMMIT TRANSACTION

2. 在sqlcmd连接时指定数据库

执行sqlcmd命令时,通过-d参数直接指定目标数据库,避免默认连接到master或其他无关数据库:

sqlcmd -S TOM -d YourTargetDatabase -U YourUsername -P YourPassword -i YourScript.sql

3. 检查架构与表名的大小写匹配

如果数据库使用区分大小写的排序规则(如SQL_Latin1_General_CP1_CS_AS),需确保脚本中的schema和Table大小写与数据库中实际对象完全一致。SSMS可能自动忽略大小写,但sqlcmd会严格匹配对象名。

4. 消除对象名歧义

若登录账号的默认架构不是schema,可以在表名前完整指定数据库名.架构名.表名,确保sqlcmd能精准定位对象:

UPDATE YourTargetDatabase.schema.Table
SET description = @latestDescription
WHERE id = 'id' AND latest=1 AND description = @previousDescription

内容的提问来源于stack exchange,提问作者Amila Eranda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:17:10