質問

SQL Server 2005データベースからいくつかのBLOBデータを取得し、この同じデータを別のデータベースの別のサーバーに挿入するSQLスクリプトを生成する必要があります。

SQLスクリプトを使用してのみこれを行うことができます。他のユーティリティを使用したり、Javaや.NETでプログラムを記述したりすることはできません。

もう1つの大きな制限は、スクリプトを実行してBLOBデータをターゲットデータベースにコピーするときに、元のデータベース(元のBLOBデータがある)にアクセスできないことです。 SQLスクリプトファイル内でエンコードされます。

まとめ:BLOBデータをテキストにエンコードして、スクリプトテキストファイル内のSQL INSERTコマンドにダンプして実行できるようにする方法はありますか?

必要に応じて、特別なT-SQLステートメントとストアドプロシージャを実行できます。

役に立ちましたか?

解決

TEXTCOPYは、SQL Server 7.0および2000に含まれていたサンプルアプリケーションでしたが、SQL Server 2005では使用できなくなりました。

ただし、SQL Server 2005のTEXTCOPYをグーグルで検索すると、トリックを実行する可能性のあるこの代替手段が見つかりました。

http://sequelserver.blogspot.com/2007 /01/texcopy-sql-server-2005.html

ファイルシステムからのバイナリデータの書き込みと読み取りに依存していますが、これは私の場合は理想的ではありません(理想的にはSQLスクリプトテキストファイル自体でバイナリデータをエンコードしたいです)が、私が見つけた最高のものですこれまでのところ。

ここに、BULK OPENROWSETを使用してバイナリインポート/エクスポート操作を行う方法に関する別の優れた情報源があります。 http://msdn.microsoft.com/en-us/library/ms191184。 aspx

他のヒント

この記事" テキストまたは画像をSQL ServerにコピーまたはSQL Serverからコピー"助けることができます:

ストアドプロシージャにTEXTCOPYコマンドラインツールを統合できます。

CREATE PROCEDURE sp_textcopy (
  @srvname     varchar (30),
  @login       varchar (30),
  @password    varchar (30),
  @dbname      varchar (30),
  @tbname      varchar (30),
  @colname     varchar (30),
  @filename    varchar (30),
  @whereclause varchar (40),
  @direction   char(1))

AS

DECLARE @exec_str varchar (255)
SELECT @exec_str =
         'textcopy /S ' + @srvname +
         ' /U ' + @login +
         ' /P ' + @password +
         ' /D ' + @dbname +
         ' /T ' + @tbname +
         ' /C ' + @colname +
         ' /W "' + @whereclause +
         '" /F ' + @filename +
         ' /' + @direction
EXEC master..xp_cmdshell @exec_str

作成したファイルを他のデータベースに読み込むには、少し変更/拡張する必要があります。

Vinko がこの回答へのコメントに書いているように、これには表面でxp_cmdshellを有効にする必要があることに注意してくださいエリア構成。

TEXTCOPYの説明:

単一のテキストまたは画像の値をSQL Serverにコピーしたり、SQL Serverからコピーしたりします。値 単一行の指定されたテキストまたは画像「列」( " where句")指定された「テーブル」。

方向がIN(/ I)の場合、指定された「ファイル」からのデータは SQL Serverにコピーされ、既存のテキストまたは画像の値が置き換えられます。もし 方向がOUT(/ O)の場合、テキストまたは画像の値がコピーされます SQL Serverを指定された「ファイル」に追加し、既存のファイルを置き換えます。

この質問を見て、ページでbcpを検索します-varbinary(max)(このような列の新しい標準型)のインポートとエクスポートの両方の例があります。エクスポートのために任意のクエリを実行できます。

挿入方法SQL Server Management Studioを使用してデータベースにblobを追加する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top