ネットワークを介した一括挿入


13

誰かがこれらを手伝ってくれますか?

BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
    FIELDTERMINATOR = ' ',
    rowterminator = '\n',
    tablock
)

エラーが表示され、開くことができませんでした:

ファイル '\ SERVERNAME \ FOLDERNAME \ textFile.txt'を開けなかったため、一括挿入できませんでした。オペレーティングシステムエラーコード5(アクセスが拒否されました。)

パスはネットワーク上の別のコンピューター上にあります。


8
SQL Serverを実行しているアカウントにアクセスする権限があります'\\COMPUTER01\FOLDER01\TextFile.txt'か?通常、アカウントはアカウントとは異なることに注意してください
Damien_The_Unbeliever

3
正確なエラーを追加することもできますか?
ypercubeᵀᴹ

@Damien_The_Unbelieverに加えて:「共有データファイルを指定するには、一般的な形式\\ Servername \ Sharename \ Path \ Filenameをとる汎用命名規則(UNC)名を使用します」
-JoseTeixeira

@ypercube-ファイル '\\ SERVERNAME \ FOLDERNAME \ textFile.txt'を開けなかったため、一括挿入できませんでした。オペレーティングシステムエラーコード5(アクセスが拒否されました)。ありがとうございました
ジョナスアイビーV.インペリアル

同じドメインとクロスドメインを使用して同じ問題が発生しています(オペレーティングシステムエラーコード5(アクセスが拒否されました))。興味深いことに、XP_CMDSHELLを使用してファイルが存在するかどうかをテストするか、ファイルを移動することもできますが、一括挿入はアクセスを拒否します。SQLサービスアカウントとWindowsアカウントの両方に、フォルダーへのアクセス許可があります。

回答:


14

信頼を飛躍させ、Windows認証を使用してSQL Serverに接続すると仮定します。このような場合、Kerberosダブルホップがあります。1つのホップはSQL Serverに接続するクライアントアプリケーションであり、2番目のホップはリモートに接続するSQL Server \\COMPUTER01です。このようなダブルホップは制約付き委任の制限に該当し、匿名ログインとしてアクセスにアクセスするため、アクセスが拒否されます。

問題を修正するには、SQL Serverサービスアカウントの制約付き委任を有効にする必要があります。このブログの方法:制約付き委任(アクセスが拒否されました)使用したSQL Server一括挿入には、その方法の例があります。ただの悪。

私が銃を飛ばし、SQL認証を使用してSQL Serverにログインしている場合、SQLログインの資格情報を作成し、それを使用してネットワークリソースにアクセスする必要があります。を参照してくださいCREATE CREDENTIAL


1

SQL Serverはファイルを開こうとしましたが、ファイルサーバーは、SQL Serverが実行されているアカウントにファイルを開く権限がないため、「アクセスが拒否されました」と言いました。それに応じてファイルのセキュリティ設定を変更すると、機能します。


1

(bulkadminアクセス許可を持つ)SQLログインでスクリプトを実行し、ネットワークフォルダーのアクセス許可をSQLサービスアカウントまたはSQL Serverエージェントアカウントに対して認証させます。


-2

このメッセージが表示されるたびに、何が効果的かを説明します。メモ帳でテキストとしてcsvファイルを開き、ファイル内のすべての空白行を削除すると、Excelファイル内のこれらの空白行が表示されません。通常、空であっても表示されるように見える最後の行


同じエラーですか?
dezso

これは、アクセス拒否エラーとは関係ありません。これは、ファイル形式のエラーのみを修正します。
ジュリアンバヴァッセル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.