XMLを返すストアドプロシージャを作成しました。 SQL Server管理スタジオでストアドプロシージャを実行すると、xmlが返されますが、C#コードで実行するとxmlは返されません。私のコードは次のようになります。私は、私が作成したユーザーの権限をチェックしたSQL ServerストアドプロシージャがVS C#で結果を返しませんでしたが、SQL Serverで
using (SqlConnection conn = new SqlConnection(connStr)) {
using (SqlCommand cmnd = new SqlCommand("dbo.spMyStoredProcXML", conn)) {
cmnd.CommandType = CommandType.StoredProcedure;
cmnd.Parameters.Add("@Param1", SqlDbType.VarChar, 50);
cmnd.Parameters["@Param1"].Value = "Some value";
//more parameters...
conn.Open();
XmlReader xrdr = cmnd.ExecuteXmlReader();
//do stuff...
}
}
、彼らは次のようになります。 をサーバーレベルで、ログインのプロパティ]ダイアログボックスで、ユーザーマッピングの下で、私がマッピングされていますdb_datareader、db_datawriterを「チェック」してからdb_ownerロールに追加することさえできます。
データベースレベルでは、[データベースユーザー]ダイアログの[セキュリティ]セクションに移動し、権限のあるユーザーに付与されたGrantおよびWith Grant権限を使用して問題のストアドプロシージャを実行しました。また、データベースのすべてのテーブルを削除、挿入、選択、および更新するために、ユーザーに「許可」権限を明示的に選択しました。
"XmlReader xrdr = cmnd.ExecuteXmlReader();" xrdr変数は空です。エラーは報告されません。誰かが私が調べる必要があるものについての提案をすることはできますか?
お手数ですがお寄せいただきありがとうございます。ここで
は(SQL Server Management Studioの中で完璧に動作します)ストアドプロシージャの簡易版である: AS
CREATE PROCEDURE [dbo].[spGetXML]
(@param1 varchar(50), @param2 varchar(1))
SET NOCOUNT ON;
with xmlnamespaces ('http://schemas.xmlsoap.org/soap/encoding/' as SOAP_ENC)
select
d.Col1,
d.Col2,
from MyTable d
where d.Col1 = @param1 and
d.Col2 = @param2
FOR XML PATH('ObjectName'), root('DOCUMENT'), type
END
2つのデータベースがありますか?おそらく間違ったものにアクセスしているのでしょうか? –
手続きを投稿できますか?上に行くことがなければ、これはかなり挑戦的です。 –
Sqlプロファイラを実行します。クエリは実行されていますか?それは正しい値を返していますか? – stuartd