2013-08-01 86 views
0

我一直在尋找一個解決方案的天,我卡住了。我耗盡了所有資源,需要解決此問題。如果有任何人有想法或知道如何做到這一點,請幫助。批處理文件連接到服務器並在連接的服務器上執行程序安裝

我在Server1上有一個SQL Server數據庫。我有一個應用程序,它在Server2(ServerName2)上安裝並運行,並且需要在安裝在此服務器上的應用程序中運行。

我需要的是執行批處理文件,當一個行被插入到表中。 SQL Server數據庫位於Server1上。批處理文件啓動應用程序並調用執行過程的腳本。此腳本需要在安裝在Server2上的應用程序內運行。我在桌上創建插入後有一個觸發器。現在我需要一些如何執行這個批處理文件。請注意,批處理文件調用安裝在不同服務器上的程序。

我想到了2個解決方案:

  1. 使用SQL Server來執行它位於Server2上的批處理文件。我嘗試使用"EXEC xp_cmdshell '\\ServerName2\C:\MSTR SCRIPT FILES\Batch_File_Execute_OTB_Script.bat"
    它返回了2條記錄,第一條「找不到網絡名稱」。第二個爲NULL。

  2. 用連接字符串創建一個批處理文件到ServerName2,即啓動.exe程序。我能夠獲得批處理文件來啓動此程序並運行腳本,如果我在ServerName2上運行此腳本。

總之,我需要通過SQL Server或通過批處理從Server1連接到Server2嗎?這可能嗎?如果是,請給我提供一些指導。
一旦我建立連接,是否需要調用.exe程序並運行我的腳本?什麼是從遠程連接觸發這個命令?

+0

我不知道我理解你,都是服務器'SQL Server'嗎?如果他們是爲什麼你不能鏈接服務器並執行遠程過程? –

+0

對不起。兩臺服務器都在Windows Server 2008上運行。Server1安裝了SQL Server。 Server2有我的應用程序,MSTR安裝。 – user2642833

+1

在批處理文件中使用SQLCMD。請參閱SQLCMD /?我今天早些時候回答了一個類似的問題,當我回應時,問題被刪除了。 NT身份驗證或SQL身份驗證?回答,我會回覆。 – RGuggisberg

回答

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