我的SQL server 2008 r2&中有以下存储过程。 asp.net mvc web应用程序: -
USE [ITSERres]
GO
/****** Object: StoredProcedure [dbo].[AdvanceSearchSP] Script Date: 08/04/2014 16:21:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object: StoredProcedure [dbo].[AdvanceSearch2] Script Date: 07/18/2014 10:37:47 ******/
ALTER PROCEDURE [dbo].[AdvanceSearchSP]
-- Add the parameters for the stored procedure here
@SearchType nvarchar(10) = null,
@CustomerID bigint = null,
@StringCustomerID nvarchar(50) = null,
@SiteID bigint = null,
@StateID bigint = null,
@PrimarycustomerOnly bit = false,
@RoleID int = null,
@TypeID int = null,
@IsManaged bit = null,
@Name nvarchar(125) = null,
@NameSelection nvarchar(10) = null,
@Tag nvarchar(50) = null,
@TagSelection nvarchar(10) =null,
@ServiceTag nvarchar(100) = null,
@ServiceTagSelection nvarchar(10) =null,
@SerialNumber nvarchar(50) = null,
@SerialNumberSelection nvarchar(10) =null,
@Comment nvarchar(250) = null,
@CommentSelection nvarchar(10) =null,
@IP nvarchar(50) = null,
@IPSelection nvarchar(10) = null,
@MAC nvarchar(50) = null,
@MACSelection nvarchar(10) = null
AS
BEGIN
SET NOCOUNT ON;
if(@SearchType = 'name')
Begin
-- Insert statements for procedure here
select t.Tag , r.RESOURCENAME , rs.DISPLAYSTATE as StateName, tt.Name as TypeName , sdo.NAME as sitename , accountdef.ORG_NAME as cusotmername, t.IsManaged as ismanaged ,sysinfo.SERVICETAG,r.SERIALNO
//code goes here...
我做了以下事情: -
我映射了SP insdie my .edmx文件。
我右键单击.edmx文件,点击"模型浏览器"。
在我的模型下,我点击导入功能。
我右键单击SP,单击编辑。 然后当我点击"获取列信息" ,我收到以下消息: -
所选存储过程不返回任何列
所以有人可以建议吗? 感谢
答案 0 :(得分:24)
我也面临同样的问题。仅供参考,我的存储过程包含临时表。 谷歌搜索后,发现这个页面解决了我的问题:
建议的解决方案是在存储过程的开头添加SET FMTONLY OFF 它完全符合我的情况。
也许你可以尝试一下。
答案 1 :(得分:0)
我看到了同样的问题,但在我的情况下,结果是我的数据库连接字符串使用了权限有限的用户。 我假设如果没有使用某种级别的权限,EF就无法计算出架构结构。
我将连接字符串更改为具有更高权限的用户,更新了我的EDMX,然后更改回更低级别的用户。
这不太理想,但我想我可以调查以确切了解EF需要什么权限,然后考虑这些是否是我愿意授予我的一般访问权限用户的权利。 (一天又一天)
答案 2 :(得分:0)
试试这个
create proc sp_ExecuteTest
@IdMachines nvarchar(50)
as
SET FMTONLY OFF;
DECLARE @SQLQuery AS NVARCHAR(500)
CREATE table #tempTable(IdMachine int)
SET @SQLQuery = 'insert into #tempTable select IdMachine from MachineMaster where idmachine IN(' + @IdMachines + ')'
EXECUTE sp_executesql @SQLQuery
SELECT * FROM #tempTable
drop table #tempTable