批处理文件连接到服务器并在连接的服务器上执行程序安装

时间:2013-08-01 16:11:24

标签: sql batch-file cmd

我一直在寻找解决方案,我被困住了。我已经耗尽了所有资源,需要解决这个问题。如果有任何人有想法或知道如何做到这一点,请帮助。

我在Server1上有一个SQL Server数据库。我有一个应用程序,它在Server2(ServerName2)上安装并运行,并且需要在此服务器上安装的应用程序中运行。

我需要的是在行插入表时执行批处理文件。 SQL Server数据库位于Server1上。批处理文件启动应用程序并调用脚本,该脚本执行过程。此脚本需要在Server2上安装的应用程序内运行。在表上创建插入后我有一个触发器。现在我需要一些如何执行这个批处理文件。请注意,批处理文件调用安装在不同服务器上的程序。

我想到了两个解决方案:

  1. 使用SQL Server执行位于Server2上的批处理文件。我尝试使用"EXEC xp_cmdshell '\\ServerName2\C:\MSTR SCRIPT FILES\Batch_File_Execute_OTB_Script.bat" 它返回了2条记录,第一条"无法找到网络名称。"第二个是NULL。

  2. 创建一个包含ServerName2连接字符串的批处理文件,启动.exe程序。我能够获取批处理文件来启动该程序并运行脚本,如果我在ServerName2上运行它。

  3. 总之,我需要通过SQL Server或批处理从Server1连接到Server2?这可能吗?如果是,请向我提供一些指导 建立连接后,是否需要调用.exe程序并运行我的脚本?从远程连接触发此命令的命令是什么?

1 个答案:

答案 0 :(得分:1)

这里有一些代码可以帮助您连接到SQL服务器并询问SQL版本。

@ECHO OFF
SQLCMD /? > nul 2> nul
IF ERRORLEVEL 1 ECHO.SQLCMD not found on this machine & PAUSE & GOTO :eof

SET SQLCmdLine=SQLCMD -b -w400
REM use something like the next line for NT authentication; second line for SQL authentication
REM for NT SET SQLCmdLine=%SQLCmdLine% -E -S "YourServerName"
REM for SA SET SQLCmdLine=%SQLCmdLine% -U "YourSQLUserName" -P "YourSQLPassword" -S "YourServerName"
SET Database=YourDatabaseName


REM I will use NT Authentication for this example
SET SQLCmdLine=%SQLCmdLine% -E -S "(local)"
SET TestSQLCmdLine=%SQLCmdLine% -h-1 -d "%Database%"

REM this will get the SQL version
%TestSQLCmdLine% -Q "SELECT @@VERSION" | FINDSTR /v "rows affected"

REM this will run a SQL script
%TestSQLCmdLine% -i "YourSQLScript.SQL"
PAUSE