Excel ADOを使用してSQL Server上でストアドプロシージャを実行すると予期しない動作が発生します。ストアドプロシージャには文字列パラメータがあります。 spのパラメータが短すぎると、4 milion文字を四捨五入するとすべて正常に動作します。Excel ADO接続を介してパラメーターを使用してストアドプロシージャを実行する場合の制限
文字列パラメータがe.iの場合に問題が発生します。 9百万の文字。 私は、SPの冒頭にこのコードでパラメータを取り込むよう間違いなくADOは、SQLサーバーに突き刺すことが可能と判断した:
create procedure MyStoredProcedure(@String nvarchar(max))
as
if OBJECT_ID('dbo.temp', 'U') is not null drop table dbo.temp;
select [String][email protected] into dbo.temp
しかし、パラメータはエクセルADOを介して呼び出され、SPでさらに処理することができません。詳細なspは重要ではないかもしれませんが、ちょうどStackoverflowで答えがhereで提示されているかもしれません。 SSMSからこのように呼び出すことができるので、sp自体は大丈夫です。
declare @String nvarchar(max)
set @String=(select top 1 [String] from dbo.temp);
exec dbo.MyStoredProcedure @String
このクエリはパラメータサイズに制限なく正しく実行されます。
Excel ADOのようなパラメータの長さ制限、クエリ制限、制限時間によるストアドプロシージャの実行には制限がありますか。
別のテクニックを使うと効果的かもしれませんが、実際に何をしようとしているのかを特定する別の質問をしたり、いくつかの調査を行います。多くのETLツールがあり、Excelを開いた状態で実行する必要があるか、スケジュールされた負荷を使うことができるか、またはさまざまな回答がたくさんあります。 9百万文字は、SQLサーバーに渡すための大幅なサイズのパラメータです。また、あなたの他の質問は、文字列を分割することであり、これはSTRING_SPILT()関数を持つタグ付きSQL 2016です。https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact- SQL – Matt