【问题标题】:Use SQLCMD to execute script return Invalid object name使用 SQLCMD 执行脚本返回 Invalid object name
【发布时间】:2018-01-11 15:28:06
【问题描述】:

我必须在 sql 中插入大量数据,该操作无法通过 SQL Management Studio 进行,因此我正在调查通过sqlcmd 插入的操作。所以我做了以下事情:

  1. 创建一个包含以下查询的file.sql(多次):

    IF NOT EXISTS (SELECT * FROM [dbo].[tblAccount] 
                   WHERE [AccountID] = 117242 AND
                         [TimeStamp] = CAST(N'2013-01-16 05:53:50.490' AS DateTime)) 
    BEGIN
        INSERT INTO
            [dbo].[tblAccount] ([AccountID]
                               ,[Name]
                               ,[Comment]
                               ,[IsMachine]
                               ,[UserID]
                               ,[Prefix]
                               ,[Action]
                               ,[Initials]
                               ,[Name]
                               ,[TimeStamp]
                               ,[Reason]
                               ,[Iscal]) 
                        VALUES (117242
                               ,'blabla'
                               ,'The users project)'
                               ,1
                               ,'val'
                               ,39
                               ,'val'
                               ,'blabla'
                               ,'blabla'
                               ,CAST(N'2013-01-16 05:53:50.490' AS DateTime)
                               ,'NORMAL'
                               ,'0')
    END
    
  2. 我将文件保存到一个文件夹中,然后从命令行执行以下操作:

    C:\>sqlcmd -S pc_name\MSSQLEXPRESS -i"C:\Users\name\Desktop\OutPut\Result tblAccount.sql"
    

我收到以下错误:

消息 208,级别 16,状态 1,服务器 pc_name\MSSQLEXPRESS,第 1 行
无效的对象名称“dbo.tblAccount”。

我不确定是不是和sql的语法有关,还是和我写sqlcmd的方式有关。

【问题讨论】:

  • 你能不能尝试瞄准精确的服务器也像[YourServerName].[dbo].[tblAccount]
  • 也许你的默认数据库是错误的。尝试将-d 切换为USE 数据库。

标签: sql-server sqlcmd qsqlquery


【解决方案1】:

我知道这是一年多以前的问题,但如果有人遇到同样的问题,请务必提供凭据。我刚刚遇到了同样的问题,并且没有提供凭据,sqlcmd 发出了该错误。我不知道幕后发生了什么,但是当身份验证失败并且因此找不到表时,它似乎连接到某种默认数据库。

 sqlcmd -S <computer name> -U <username> -P <password> -i  <absolute path to your script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2012-09-25
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    相关资源
    最近更新 更多