一括挿入:私はSQL Server Management Studioのから、それを実行したときに私はいくつかのファイルからの一括挿入を行い、ストアドプロシージャ持つ問題
CREATE PROCEDURE [dbo].[SP_BulkInsert] @FileName NVARCHAR(200) AS
BEGIN
DECLARE @bulkinsert NVARCHAR(1000)
SET @bulkinsert = N'BULK INSERT TblTemp FROM ''' + @FileName +
N''' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'
EXEC sp_executesql @bulkinsert
RETURN @@ROWCOUNT
END
このストアドプロシージャが正常に動作しますが、私はExecuteNonQuery
でそれを実行しようとすると、 ADO.NETの私は、次のエラーを取得する:
"The INSERT permission was denied on the object 'TblTemp', database 'TempDB', schema 'dbo'."
重要:(SELECT/INSERT/DELETE/UPDATE
を作る)他のすべてのストアドプロシージャは、ADO.NETから罰金実行します。
すべてのものが実行されるユーザーはbulkadmin
ロールのメンバーであり、カスタムdb_executer
ロール(EXECUTE権限のみを持つ)のメンバーです。
コードは、ストアドプロシージャの多くのために正常に動作、失敗したのは初めてのことだ。.. これは私がしている同じユーザー名/パスワードでSSMSにログイン機能
public static int BulkInsert(string fileName)
{
SqlParameter paramFileName = new SqlParameter("FileName", fileName);
SqlParameter paramRetValue = new SqlParameter();
paramRetValue.Direction = ParameterDirection.ReturnValue;
SqlParameter[] @parameters = { paramFileName, paramRetValue };
SqlHelper.ExecuteNonQuery(ConnectionSettings.ConnectionString,
CommandType.StoredProcedure, "SP_BulkInsert", parameters, true);
return (int)paramRetValue.Value;
}
です
Management Studioでストアドプロシージャが成功するのはなぜですか、ADO.NET経由では(上記のエラーメッセージで)失敗するのはなぜですか。
使用しているADO.NETコードを表示できますか? –
@ marc_s。多くのストアドプロシージャでコードが正常に動作します。 ExecuteNonQuery(ConnectionSettings.ConnectionString、CommandType.StoredProcedure、 "SP_SomeBulkInsert"、parameters、true); ExecuteNonQuery(ConnectionSettings.ConnectionString、CommandType.StoredProcedure、 "SP_SomeBulkInsert"、parameters、true); – Ilan
ありがとう - しかし、あなたは元の質問にこれを入れてください。また、重要で興味深いのは、接続文字列、接続の設定方法などです** **ただ一つの行だけではありません! –