使用批处理文件执行存储过程

问题描述:

我想通过使用批处理文件传递两个参数并执行存储过程。使用批处理文件执行存储过程

如果可能的话,我需要的东西象下面这样:

请输入参数1: 请输入参数2:

我有代码,如下面我的批次,但不工作。

@ECHO OFF 
SET /P Param1=Enter the Param1: 
SET /P Param2=Enter the Param2: 
ECHO sqlcmd -E -Q "USE localdb\SQLSERVER2014 -d DemoDatabase;EXEC sp_MasterConsolidateJob @param1=N'%Param1%', @Param2=N'%Param2%'" 
SET Param1= 
SET Param2= 

pause 

非常感谢。

+0

在你的sqlcmd,你已经把你的param1和param2在双引号(“”)。理想情况下,sqlcmd双引号应该附加参数而不是内部引号。 –

+0

你有任何样品吗?我应该在哪里放置param1和param2? 如下所示? ECHO sqlcmd -E -Q“USE localdb \ SQLSERVER2014 -d DemoDatabase; EXEC sp_MasterConsolidateJob”@param1 = N'%Param1%',@ Param2 = N'%Param2%' – Enix

+0

添加了解决方案。检查并标记它是否有用。我在我的机器上用类似的sp进行了测试。它工作 –

在您提供的代码中存在语法问题。我们不指定实例名称。运行它,它应该工作:

@ECHO OFF 
SET /P Param1=Enter the Param1: 
SET /P Param2=Enter the Param2: 
sqlcmd -E -Q " -d DemoDatabase;EXEC sp_MasterConsolidateJob $(Param1), $(Param2)" 
SET Param1= 
SET Param2= 

pause 
+0

我得到这个错误: HResult 0x2,级别16,状态1 命名管道提供程序:无法打开连接到SQL Server [2]。 Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:与SQL Server 建立连接时出现网络相关或 站点特定错误。服务器未找到或无法访问。检查实例名称是否正确,并且我将SQL Server配置为允许远程连接。有关详细信息,请参阅 SQL Server联机丛书.. Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:登录超时已过期。 – Enix

+0

这完全是基于试验和错误的。尝试运行原始查询,但使用我定义的参数即$() –