执行sqlcmd连接MSSQLLocalDB运行test.sql报错如何解决
报错解决与脚本正确执行方案
你遇到的Named Pipes Provider: No process is on the other end of the pipe报错本质是sqlcmd无法和指定的LocalDB实例建立连接,可按以下步骤依次排查解决:
步骤1:确认LocalDB实例运行状态
- 首先打开命令提示符或PowerShell,执行命令查看默认实例状态:
SqlLocalDB info MSSQLLocalDB - 若返回的
State字段值不是Running,执行启动命令:SqlLocalDB start MSSQLLocalDB - 若提示实例不存在,先执行创建命令再启动:
SqlLocalDB create MSSQLLocalDB
步骤2:修正sqlcmd执行命令
默认LocalDB使用Windows集成身份验证,可显式添加-E参数指定验证模式,同时注意不同终端的引号规则:
- CMD环境执行命令:
sqlcmd -S "(localdb)\MSSQLLocalDB" -E -i test.sql - PowerShell环境执行命令:
sqlcmd -S '(localdb)\MSSQLLocalDB' -E -i test.sql
若test.sql不在当前命令执行目录下,可替换为脚本的绝对路径,例如-i "C:\dev\test.sql"
步骤3:排查连接协议配置问题
- 打开SQL Server配置管理器,依次进入
SQL Native Client 11.0配置→客户端协议,确认Named Pipes协议处于启用状态 - 若修改了配置需要重启LocalDB实例生效,执行命令:
SqlLocalDB stop MSSQLLocalDB && SqlLocalDB start MSSQLLocalDB
步骤4:权限适配
若你的SQL脚本中指定了数据库文件的存储路径,需要以管理员身份运行命令提示符/PowerShell后再执行sqlcmd命令,避免因目录写入权限不足导致后续脚本执行失败。
结果验证
命令执行无报错后,可执行以下命令确认数据库创建成功:sqlcmd -S "(localdb)\MSSQLLocalDB" -E -q "SELECT name FROM sys.databases"
内容的提问来源于stack exchange,提问作者Vadim T
相关产品推荐
相关产品推荐

