2016-08-15 22 views
1

BULK INSERTコマンドで環境変数を使用することはできますか?私は本当にこれがうまくいくと思っていました。BULK INSERT環境変数

BULK INSERT [dbo].[MyTable] FROM '%HOMEDRIVE%\Data\test.txt' 
    WITH (FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n'); 

私はこれがクライアントではなくサーバーであることを認識しています。

私はXP_cmdshellで動作すると確信していますが、それは過剰と思われます。

私は実際に別の環境変数を使用しようとしていますが、%HOMEDRIVE%を既知の例として選択しました。

+0

のFasで見つけることができるのいずれかにxp_cmdshellまたはCLR(あなたが事にxp_cmdshellが過剰である場合、あなたはおそらくCLRが同様に過大だと思います) – HoneyBadger

+0

SQLは内部機能をウィンドウを使用しています変数を認識しないファイルを開きます。 –

答えて

0

あなたはできませんが、またはCLRをHoneyBadgerとして提案できます。

XP_cmdshellを有効にすることは過度ではありませんが、軽く取るとセキュリティ上の脅威とみなされます。これは、SQL Serverに非常に多くの機能を提供するためです。

ここでは、さまざまな変数にコードを再利用することを前提としています。サーバーレベルで適切なセキュリティコンテキストがあると仮定すると、永続的な場所に保持する環境変数をホストするファイルを用意し、Windowsレベルでスケジュールされたスクリプトを何らかの形で更新する方法があります。

コンテンツを使用するには、コンテンツをBULK INSERTまたはOPENDATASOURCEまたはダイナミックSQLを作成する権限のあるものを介してSQL Serverにインポートします。私はあなたが必要と知っているようXP_cmdshellのためのいくつかの例では、同様の質問here