none
连接excel导入数据错误后,excel文件被占用无法删除 RRS feed

  • 问题

  • 系统是win2012server + sql2014 + office365

    在sql 2014中用新建查询 使用如下语句进行excel文件数据导入sql数据表。

    use  dbname
    insert into tablename select * from OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0','Data Source="c:\bb.xlsx";Extended Properties="Excel 12.0;HDR=yes;IMEX=1"')...[sheet1$]

    运行出错后,发现这个excel文件无法删除。提示图下:

    该如何释放这个文件?

    谢谢!


    nn

    2021年3月3日 7:38

答案

全部回复

  • 你好,

    我尝试了您的语句,可以正常执行(我用比较简单的文件和表进行了测试)。然后尝试修改语句,数据库配置等多次执行该语句,未能重现问题中这种文件被锁定的场景。所以也无法在我的环境中尝试一些操作去释放文件。

    我可能会先尝试关闭此新建查询窗口(SSMS?)或终止会话,不行的话,如果环境允许,重启SQL Server服务。如果仍然不行的话,那就到任务管理器手动结束“ COM Surrogate”进程。


    2021年3月3日 9:11
  • 遇到过类似的,服务重启和ssms关闭都没搞定,最终把系统重启了
    2021年3月4日 0:48
  • 系统是win2012server + sql2014 + office365

    在sql 2014中用新建查询 使用如下语句进行excel文件数据导入sql数据表。

    use  dbname
    insert into tablename select * from OPENDATASOURCE('Microsoft.Ace.OLEDB.12.0','Data Source="c:\bb.xlsx";Extended Properties="Excel 12.0;HDR=yes;IMEX=1"')...[sheet1$]

    运行出错后,发现这个excel文件无法删除。提示图下:

    该如何释放这个文件?

    谢谢!


    nn

    Use task manager to find OS process trigger by opendatasource and kill it.
    2021年3月4日 1:12
  • 谢谢回答

    语句是没有问题 问题是 我之前测试的时候失败原因是文件格式或者权限导致 后来我新建了其他excel 就ok导入的。也能ok删除。

    但是删除之前的bb文件出错。貌似被锁定。

    ssms也关闭了。重启sql估计可以 。但是场景中不允许随便重启。

    另外 我是通过远程桌面到服务器上,然后执行的。在服务器自身上页删不了


    nn

    2021年3月4日 3:49
  • 你好可以说详细一些么 ???? 谢谢我在任务管理器没有发现 OS process  也不知道如何定位trigger by opendatasource 

    请指教

       

    nn

    2021年3月4日 4:01
  • 你好可以说详细一些么 ???? 谢谢我在任务管理器没有发现 OS process  也不知道如何定位trigger by opendatasource 

    请指教

       

    nn

    Sql usually passes those kind of process to OS as cmd.exe, you can check if this kind of process exist on the machine where excel file is stored.
    2021年3月5日 1:10
  • 你好,
    dllhost.exe进程的名称为COM Surrogate。
    在这个excel文件存在的服务器上,打开任务管理器找到并手动结束“ COM Surrogate”进程。
    2021年3月5日 3:08