5

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

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

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

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

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

4

3 に答える 3

2

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

于 2008-11-07T13:26:27.240 に答える
1

この記事「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 の説明:

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

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

于 2008-11-07T13:01:30.893 に答える
0

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

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

于 2010-08-02T07:59:13.687 に答える