使用SQLCMD执行脚本返回无效的对象名称

时间:2018-01-11 15:28:06

标签: sql-server sqlcmd qsqlquery

我必须在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"
    
  3. 我收到以下错误:

      

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

    我不确定它是否与sql的语法或我编写sqlcmd的方式有关。

1 个答案:

答案 0 :(得分:0)

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

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