通过服务器身份验证在远程服务器上运行脚本时xp_cmdshell引发错误

时间:2014-04-02 11:30:51

标签: sql sql-server sql-server-2008 tsql tfs2010

Sqlcmd:错误:在文件C上打开或操作时出错:\ ewApps \ Source \ MyIssueApp \ Scripts \ DBScripts \ issueUpdateSchemaVersion.sql(原因:系统找不到指定的路径)。

这是我的sql脚本 -

    Declare @ScriptVersion ='1.1'
Declare @TargetScriptVersionNo = '1.1'
Declare @DBServerName VARCHAR(50)= 'remote-a'
Declare @DBName VARCHAR(50)='mydb'
Declare @FilePath NVARCHAR(MAX)= 'C:\ewApps\Source\MyIssueApp\Scripts\DBScripts\issueUpdateSchemaVersion.sql'
DECLARE @UserName VARCHAR(10) = 'sa'
DECLARE @Password VARCHAR(20) = 'sql1k9@abcd'
DECLARE @Command =''

set @Command = ' sqlcmd -S ' + @DBServerName + ' -U ' + @UserName + ' -P '+ @Password + ' -d ' + @DBName + ' -i "'+ @FilePathForAllScript + '" -v SubScriptVersion=''' + @VersionNumber + ''''

EXEC xp_cmdshell @Command 

生成的字符串@command是 -

sqlcmd -S ewp-dev14 -U sa -P sql2k8 @ dev14 -d a -i" C:\ ewApps \ Source \ MyIssueApp \ Scripts \ DBScripts \ issueUpdateSchemaVersion.sql" -v SubScriptVersion =' 1.1'

以及

sqlcmd -S ewp-dev14 -U sa -P sql2k8 @ dev14 -da -i C:\ ewApps \ Source \ MyIssueApp \ Scripts \ DBScripts \ issueUpdateSchemaVersion.sql -v SubScriptVersion =' 1.1'

我认为这是一个长路径相关的问题,但是当我通过一个小路径时,它的工作方式类似于c:\ ewapps \ issueUpdateSchemaVersion.sql,但我不能使用小路径,上面提到的路径是强制性的。

我的路径中没有任何空间我仍然通过同时应用"" (双重代码)并且没有双重代码但它不起作用,并显示以下错误 -

Sqlcmd:错误:在文件C上打开或操作时出错:\ ewApps \ Source \ MyIssueApp \ Scripts \ DBScripts \ issueUpdateSchemaVersion.sql(原因:系统找不到指定的路径)。

以上所有参数均来自批处理文件。

注意 - 我的这台服务器在TFS,可能是个问题吗?请帮忙......

1 个答案:

答案 0 :(得分:1)

您可以尝试使用网络路径:

\\\Server\yourfolder\yourfile.csv,

您必须共享文件夹yourfolder