0

SQL Server 2012 で実行されているコマンド ライン vb.net プログラムから呼び出しようとしているストアド プロシージャがあります。

CREATE TABLE #ftpData(ftp_Email varchar(150) COLLATE DATABASE_DEFAULT, ftp_Segment varchar(1) COLLATE DATABASE_DEFAULT)
BULK INSERT #ftpData FROM 'C:\Users\Administrator\Documents\tempSegFiles\segmentation_.csv'
WITH(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

これを管理スタジオから実行すると、正常に実行されます。vb.net プログラムからストアド プロシージャを呼び出すと、エラーが発生します。

ファイル「xxx」を開けなかったため、一括読み込みできません。オペレーティング システム エラー コード 5 (アクセスが拒否されました。)

ストアド プロシージャを呼び出すためにログインする SQL アカウントには、一括操作を変更、実行、挿入、および管理する権限があります。また、bulkadmin、diskadmin、public に対するサーバー全体のセキュリティ権限も持っています。

他に必要なオプションはありますか?

4

1 に答える 1

0

「アクセスが拒否されました」というエラーは、一括挿入しようとしている CSV ファイルへのアクセスに問題があることを示しています。コマンド ライン (およびストアド プロシージャ) を実行しているアカウントにも、CSV ファイルを読み取る権限があることを確認してください。

更新: SQL ログインを使用してプロシージャを実行しているようです。この MSDN 記事の「セキュリティに関する考慮事項」というセクションを参照してください。ウィット:

ユーザーが SQL Server ログインを使用する場合、SQL Server プロセス アカウントのセキュリティ プロファイルが使用されます。

于 2013-01-24T16:08:15.270 に答える