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

ストアド プロシージャを介して SQL からバイナリ ファイル データ (イメージ) をエクスポートする

    まず第一に.. (それについて申し訳ありません;)) カーソルを使用しないでください..大文字で申し訳ありません...

    カーソルの最も悪い点の 1 つは、カーソルがテーブルをロックできることです。これらの目的のために私がいつも行っていること (そしてこれは非常に高速です) として、for ループを使用します.. このように

    declare @totrow int
          , @currow int
          , @result int
          , @nsql nvarchar(max)
    
    declare @sqlStatements table (
      Id int identity(1, 1)
    , SqlStatement varchar(max)
    )
    insert 
    into    @sqlStatements
    select  'QUERY PART'
    from    table
    
    set @totrow = @@rowcount
    set @currow = 1
    while @totrow > 0 and @currow <= @totrow
    begin
      select @nsql = SqlStatement
      from   @SqlStatements
      where  Id = @currow
    
      exec @result = xp_cmdshell @nsql
    
      set @currow = @currow + 1
    end
    

    次の部分では、SQL Server プロセスは c:ドライブに書き込むための十分なアクセス許可を持っていますか?また、コードを実行するときにメッセージ ペインを調べてください。そこに何かが見つかるかもしれません。

    あなたもできることは、手動で実行してみてください。 BCP ステートメントを 1 つ取得し、xp_cmdshell で実行するだけです。エラーは発生しますか?



    1. 同じテーブル内の子レコードを削除するMySqlトリガー

    2. 1つのクエリで別のテーブルから取得したテーブルのリストをUNIONするにはどうすればよいですか?

    3. SQL Serverのxml出力にxmlエンコーディング<?xml version =1.0 encoding =UTF-8?>を追加する方法

    4. Mysqldumpの定義者をスキップまたは無視する