1

csv テスト ファイルからの一括アップロード

「\サーバー名\wwwroot\Upload\LDSAgentsMap.txt」

     SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[sp_CSVTest_BulkInsert] ( @Path NVARCHAR(128) )
AS 
    DECLARE @Sql NVARCHAR(256)
    SET @Sql = 'BULK
INSERT CSVTest 
FROM ''' + @Path + ''' WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)'
--PRINT @Sql
EXEC(@Sql)

GO

パスは「\servername\wwwroot\Upload\LDSAgentsMap.txt」です

ノート

これは共有ホスティングにあり、データベースユーザーにはblukadminとパブリックサービスの役割があります

4

2 に答える 2

2

これは、SQL を実行する Windows ユーザー アカウント (SqlServerAccount など) が共有ファイル (\servername\wwwroot\Upload\LDSAgentsMap.txt) にアクセスする権限を持っていない場合に発生する可能性があります。

これを解決した 1 つの方法は、共有ファイルが存在するマシンに移動することです。そのマシンで、SQL を実行するアカウントと同じユーザー名とパスワードを持つ Windows ユーザー アカウントを追加します。

例えば、

データベースが MyDatabaseServer に存在し、Windows ユーザー アカウント SqlServerAccount でパスワード Foo を使用して実行している場合、共有ファイルが存在するマシン (MyFileServer など) に移動し、SqlServerAccount という名前の Windows ユーザー アカウントをパスワード Foo で作成します。

最後のステップ: MyFileServer のフォルダー共有に移動し、そのフォルダーの共有プロパティに移動します。(Win7 では、フォルダを右クリック -> [プロパティ] -> [共有] -> [高度な共有])。次に、作成した SqlServerAccount の読み取り権限を追加します。

于 2011-02-17T18:31:19.423 に答える
1

一括挿入を実行するストアド プロシージャを実行しようとすると、SSIS からこのエラーが発生しました。

SQL Server のポート番号を SSIS の接続文字列に追加して、SSIS が名前付きパイプではなく TCP/IP を介して SQL Server にアクセスするように強制することで、この問題を修正しました。

于 2012-04-02T16:42:23.407 に答える