0

私の目的は次のとおりです。

SQL プロシージャ バックアップ データベースが完了したら、bak ファイルをローカル コンピューターにコピーします。

これは私の手順です(bak DBは完了しています):

create procedure CopyFile
as
begin
    declare @DynamicSQL varchar(1000)
    set @DynamicSQL='net use \\Dolphin-PC\ipc$ 123 /user:Administrator&&xcopy E:\"Database backup"\%Date:~0,4%%Date:~5,2%%Date:~8,2%\*.bak  \\Dolphin-PC\D$\邮电\LocalDB\%Date:~0,4%%Date:~5,2%%Date:~8,2%\ /E /Y /H /K&&net use \\Dolphin-PC\ipc$ /delete'   
    --Configure extension procedure the cmd_shell enable
    exec sp_configure 'show advanced options',1;
    reconfigure;
    exec sp_configure 'xp_cmdshell',1;
    reconfigure;    
    exec xp_cmdshell @DynamicSQL
    --Configure extended procedure cmd_shell disable
    exec sp_configure 'show advanced options',1;
    reconfigure;
    exec sp_configure 'xp_cmdshell',0;
    reconfigure;
end

proc を実行すると、次のようなヒントが表示されます。

occour system error 1312。
NULL
the session have not been complete.Maybe have been finished.
NULL
NULL

DOS問題ありません。コマンドDOSは次のとおりです。

net use \\Dolphin-PC\ipc$ 123 /user:Administrator
xcopy E:\"Database backup"\%Date:~0,4%%Date:~5,2%%Date:~8,2%\*.bak  \\Dolphin-PC\D$\邮电\LocalDB\%Date:~0,4%%Date:~5,2%%Date:~8,2%\ /E /Y /H /K
net use \\Dolphin-PC\ipc$ /delete

別の方法で sql を使用してバッチを実行します。

exec sp_configure 'show advanced options',1;
    reconfigure;
    exec sp_configure 'xp_cmdshell',1;
    reconfigure;    
    exec xp_cmdshell 'E:\"Database backup"\bakcpy.bat'
    --Configure extended procedure cmd_shell disable
    exec sp_configure 'show advanced options',1;
    reconfigure;
    exec sp_configure 'xp_cmdshell',0;
    reconfigure;

エラーは次のとおりです。

NULL
C:\Windows\system32>net use \\Dolphin-PC\ipc$ 123 /user:Administrator 
occur system error 1312.
NULL
The login session does not exits.Maybe finished.
NULL
NULL
C:\Windows\system32>xcopy E:\"Database backup"\20131115\*.bak  \\Dolphin-PC\D$\js\LocalDB\20131115\ /E /Y /H /K 
invalid disk format
 0 file have been copied
NULL
C:\Windows\system32>net use \\Dolphin-PC\ipc$ /delete 
Can't find network connection.
NULL
input NET HELPMSG 2250 to get more help
NULL
NULL
4

1 に答える 1

0

DOS コマンドをバッチ ファイルに入れます。代わりにストアド プロシージャからバッチ ファイルを実行します。これにより、一重引用符とスペースに関する問題が解消されます。

于 2013-11-13T03:35:16.220 に答える