長時間リードオンリーメンバー、ここでは、初めてのポスター:)LINQ「次のストアド・プロシージャの戻り値の型が検出されなかった」(NOT一時テーブル)
私がきたので、私はここに頼むことにしましたGoogleやSOなどで検索するのに飽き足りました。
「次のストアド・プロシージャの戻り値の型が検出されなかった」:私は私のSQL 2005 DBの私のウェブサイトへ(FW 4.0、C#)LINQプロジェクトからストアドプロシージャをインポートするときに、このエラーが発生しています
私は2つのクエリを持っています。 私は一時テーブルを使用していないことに注意したいと思います。これらのクエリは、セキュリティ対策のためにのみ、変数名などで編集されています。とにかく、ここではを動作するものがあります:
ALTER PROCEDURE [dbo].[spMyWorkingProc]
@OS numeric
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(5000)
set @sql = '
SELECT
*
FROM MYDB.dbo.MYVIEW
WHERE OS = ' + CONVERT(varchar, @OS)
EXEC('
SET NOCOUNT ON
SELECT * FROM
OPENROWSET(''SQLOLEDB'', ''MYDB''; ''user''; ''password'', ''' + @sql + ''')')
END
そして、ここでは、がないものです:
ALTER PROCEDURE [dbo].[spNotWorking]
@IDCLIENT int,
@PPNO char(10)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql varchar(5000)
set @sql = '
SELECT
*
FROM MYDB.dbo.MYOTHERVIEW
WHERE ID = ' + CONVERT(VARCHAR, @IDCLIENT) + ' AND PASSPORTNO = ' + @PPNO + ' ORDER BY AGE'
EXEC('
SET NOCOUNT ON
SELECT * FROM
OPENROWSET(''SQLOLEDB'', ''MYDB''; ''user''; ''password'', ''' + @sql + ''')')
END
ここではいくつかのノートと一緒に、私が試したし、見つけたものだと質問:
両方のユーザー(LINQとリモートサーバー)はdb_ownerです。
私がそれを1つのパラメータだけで残しておけば、動作していないストアドプロシージャが機能します。私が新しいものを追加すると、うまくいきません。
テーブルから単純なselect *を使用して空のSPを作成し、2つ以上のパラメータを使用するとうまくいく(意味がない)。
問題がEXECにあるとします。もしそうなら、どのように最初のSPが動作するのですか?さて、問題はそこにはありません。
私は現役SPで私がアクセスしたビューを使用すると問題はありません。
提供されたクエリを使用してこれを行う必要があります。 6.5データベースに接続するために必要なリンクサーバーなどを使用することはできません。また、同じ方法を使用している間に最初のSPが動作する理由と2番目のSPが動作しない理由については説明しません。
は、私が働いてSPに(非作業SPから取られた)パラメータを追加しようとしましたが、それは動作しますので、それは、第二のSPとなるものでなければなりませんが、私は何を知らない:/
オーケーを私が2番目のSPを修正し、@ VARのスタイルでパラメータを削除し、それらを単一の@sql変数にハードコードすると、完全に動作します。だから、私は動的なクエリ(または何か)に変数を含めるものでなければならないことがわかります。
私は文字通り自分の髪を引っ張っているので、アイデアや提案は大歓迎です!
ありがとうございます! - DARKGuy
これらのSQL Serverデータベースはありますか?動的クエリの代わりにリンクサーバーを使用できます。 – jtimperley
そうです。私は可能ですが、この場合、6.5データベースに接続する際には使用できません。しかし、問題は同じサーバーやDB内のテーブルやビューに対して行われた問題に起こりましたが、別の回避策を使用しましたが、その時点では一時テーブルと関係がありましたが、今度は、 t:P – DARKGuy
さて、ダイナミックパラメータを削除し、ハードコーディングしていくつかの行を返すように修正しました(パラメータをハードコーディングすることによって)、それをLINQに追加して、SPをパラメータなどで元の動的クエリに戻して編集しました。愚かなLINQのバグ:( – DARKGuy