【发布时间】:2018-08-06 11:14:36
【问题描述】:
我查看了其他类似标题的帖子,但没有任何建议对我有用。
使用 SQL Server 2014、VS2015 和 IIS 8.0.9
应用程序在 VS 中启动时运行良好,但在部署到 IIS 时失败并出现上述错误。该网页包含一个下拉框以及一个开始和结束日期文本框。用户可以从下拉列表中选择医院并输入开始和结束日期标准,单击一个按钮,结果将在 gridview 控件中返回。正如我所说,这在 VS 中完美运行。
当我登录到我的 IIS 服务器时,打开 IIS 导航到我的应用程序并从选项中选择“浏览”并尝试导航到这个特定的网页,就会生成错误。所有其他功能都按预期工作。
我尝试过的:
- 已检查存储过程的拼写是否正确
- 通过使用相同的凭据登录 SSMS 并执行存储过程,检查了我的连接字符串中用户的登录凭据。 两者都可以。
- 已检查用户对存储过程的权限。用户是“db_execute”角色的成员,我认为可以
- 已检查登录凭据是否与 IIS 中的凭据匹配。他们这样做是因为所有其他功能都在工作,并且他们都使用相同的登录凭据
- 已运行 SQL Profiler 跟踪。它没有发现任何我可以看到的问题
- 已多次删除并重新创建存储过程。没有变化
- 已从 IIS 中删除应用程序并重新创建。没有变化
- 已安装在运行不同版本 IIS (6) 的服务器上。同样的错误
- 挠头,没有想法......
- 准备从窗口扔电脑
T-SQL
@HospitalID INT = NULL,
@StartSamplingDate DATETIME = NULL,
@EndSamplingDate DATETIME = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
DNASCreeningID, Surname, Forename, DoB, T21DNAResult, T18DNAResult,
T13DNAResult, SamplingDate
FROM
tblPatients
WHERE
(@HospitalID IS NULL OR HospitalID = @HospitalID)
AND ((@StartSamplingDate IS NULL) OR SamplingDate >= @StartSamplingDate)
AND ((@EndSamplingDate IS NULL) OR SamplingDate <= @EndSamplingDate)
ORDER BY
DNAScreeningID ASC
END
如有任何建议或想法,我将不胜感激。谢谢。
【问题讨论】:
-
您是否连接到正确的数据库?我会冒险猜测您正在连接到存储过程所在的不同数据库。这不是权限问题,因为这会导致不同的错误。此外,它有一个包罗万象的查询的“气味”,它的执行非常糟糕:Catch-all Queries
-
您是否在 IDE 中单步执行过代码?
-
@Larnu。是的,我正在连接到正确的数据库。
-
@Prescott Chartier。如果您的意思是在 Visual Studio 中,那么是的。该页面按预期工作,并根据所选条件返回预期结果。
-
这取决于您使用的连接字符串。如果您选择 Windows 身份验证,则在 VS 中运行时,应用程序使用您的登录凭据,而在 IIS 上,它使用应用程序标识。两种场景完全不同,你的数据库访问控制可以简单的阻塞后者。
标签: sql-server vb.net iis