1

一括挿入を使用して、ローカル マシンで単一の xml ファイルの内容を読み取ろうとしました。

SELECT * FROM OPENROWSET ( BULK '''+ @FILENAME+''' , SINGLE_CLOB ) AS xmlData

それは機能していますが、リモートマシンから読み取ろうとしているのと同じです。次のエラーが発生します

Msg 4861, Level 16, State 1, Line 1
Cannot bulk load because the file "Z:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML" could not be opened. Operating system error code 3(The system cannot find the path specified.).

ファイルパスを次のように指定しました

\\172.16.11.52\D:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML

同じエラーが発生し、そのリモート マシンのネットワーク共有ドライブを作成しました。

Z:\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML

同じエラー:-(解決するのを手伝ってください?

4

1 に答える 1

2

ここでの問題は、SQL Server ではなく、ファイル共有に関するものと思われます。

まず、ドライブ マッピングはユーザーごとに行われるため、ドライブ文字を使用すると、SQL Server サービス アカウントにドライブ文字がマップされていないため、SQL Server で作業するときに問題が発生します。そのため、ドライブ文字を完全に使用せず、単純に UNC パスを使用することをお勧めします。

次に、シェアの形は です\\ServerName\Share。アクセスしようとしているファイルは D: ドライブのルートにあるようですので、正しいパスは\\172.16.11.52\D$\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML. ただし、これD$デフォルトの管理共有であり、管理者のみが使用できることに注意してください。SQL Server サービス アカウントには管理者権限がないことが期待されるため、いずれにしても使用しないでください。ファイルを任意のドライブ (特にC:) のルートに保存することは、通常は悪い習慣です。

最後に、共有を持っている場合でも、共有へのアクセスに使用するアカウントには、共有とファイルシステムの両方に対するアクセス許可が必要です。これは、ドメイン アカウントを使用して SQL Server を実行する利点の 1 つです。

要約すると、おそらく行う必要があるのは次のとおりです。

  1. まだ実行していない場合は、ドメイン アカウントを使用して SQL Server を実行します (上記のリンクを参照)。
  2. ファイル用のフォルダーを作成し、それを呼び出しますD:\XMLFiles(または好きなもの)
  3. フォルダーを共有します。これで、という名前の共有ができました\\172.16.11.52\XMLFiles
  4. SQL Server サービス アカウントに共有から読み取る権限があることを確認します
  5. コードをもう一度試してください。

SELECT * FROM OPENROWSET ( BULK '\\172.16.11.52\XMLFiles\TechnicalLoss_EnergyAccounting_10.10.2012.12.19.PM.XML' , SINGLE_CLOB ) AS xmlData

于 2012-10-11T14:31:05.647 に答える