Sql server sqlserverexpress&;sqlcmd:找不到存储过程

Sql server sqlserverexpress&;sqlcmd:找不到存储过程,sql-server,stored-procedures,sql-server-express,sqlcmd,Sql Server,Stored Procedures,Sql Server Express,Sqlcmd,我继承了一个SQL Server Express实例中的数据库,并意识到它没有得到备份。因为它是SQL Server Express,并且没有SQL Server代理,所以我发现这篇文章描述了如何自动化备份。 备份脚本工作正常,我可以从SQLServerManagementStudio成功运行存储过程来创建备份。我的问题从步骤B开始,使用sqlcmd 不管我做什么,都只是说错话 找不到存储过程“dbo.sp_backupdatebases” 存储过程存在于主数据库中: 此外,我还使用一个系

我继承了一个SQL Server Express实例中的数据库,并意识到它没有得到备份。因为它是SQL Server Express,并且没有SQL Server代理,所以我发现这篇文章描述了如何自动化备份。

备份脚本工作正常,我可以从SQLServerManagementStudio成功运行存储过程来创建备份。我的问题从步骤B开始,使用
sqlcmd

不管我做什么,都只是说错话

找不到存储过程“dbo.sp_backupdatebases”

存储过程存在于主数据库中:

此外,我还使用一个系统存储过程测试了运行该命令,它也可以很好地执行这些命令。它似乎找不到我创建的这个自定义存储过程

我还运行了以下命令:

select * from information_schema.routines
我的存储过程在其中一个记录中找到


感谢您的帮助

这看起来像是一个名称解析问题。我会尝试跳过数据库/架构名称,即:

EXEC sp_backupDatabases ...

随意猜测
使用master
并使用
EXEC master.dbo.sp_backupdatebase…
而不使用
[]
。可能名称中有空格,或者您正在连接到不同的实例。我以前尝试过这两种方法,有[],没有[],以及您可以想象的几乎所有版本的名称。有趣的是,我可以完全正确地执行这个命令:sqlcmd-S.\SQL2008R2-E-Q“EXEC[sys].[sp_datatype_info]”,而无需任何提示或口哨,并且它成功地找到了sp。我想它可能在缓存表的某个地方工作,需要刷新,但不确定如果是这样的话该怎么做。所以很可能是权限问题。您是否使用同一个用户通过SSMS/sqlcmd进行连接?最后一个想法:
EXEC sp_backupdatebase
没有模式和数据库地狱是的,这在没有数据库和实例名称的情况下有效:sqlcmd-E-Q“EXEC sp_backupdatebase@backupLocation='F:\SQLBackups\,@backupType='F'”我不知道为什么……但是谢谢!输入答案,我就可以加快速度。