sql >> データベース >  >> RDS >> Sqlserver

xp_cmdshell に渡されたコマンド パラメータを dtexec にエスケープする

    一言で言えば、 CMD /S /C " 、および " 最後に。間に好きなだけ引用符を付けることができます。

    方法は次のとおりです。

    declare @cmd varchar(8000)
    -- Note you can use CMD builtins and output redirection etc with this technique, 
    -- as we are going to pass the whole thing to CMD to execute
    set @cmd = 'echo "Test" > "c:\my log directory\logfile.txt" 2> "c:\my other directory\err.log" '
    
    
    declare @retVal int
    declare @output table(
        ix int identity primary key,
        txt varchar(max)
    )
    
    
    -- Magic goes here:
    set @cmd = 'CMD /S /C " ' + @cmd + ' " '
    
    insert into @output(txt)
    exec @retVal = xp_cmdshell @cmd
    insert @output(txt) select '(Exit Code: ' + cast(@retVal as varchar(10))+')'
    
    select * from @output
      

    1. PostgreSQLのwalファイルデータを読み取る方法は? PostgreSQLバイナリを読み取り可能なテキスト形式に変換するコマンドはありますか?

    2. Pythonモジュールcx_Oracleモジュールが見つかりませんでした

    3. MSSQLServerからMySQLデータベースへの挿入

    4. BULKCOLLECTおよびFORALLを使用してPL/SQLをコンパイルできません