尝试从我的书中授予ASP.NET访问示例数据库的权限

时间:2011-08-17 03:33:38

标签: sql-server iis-7 asp.net

我正在尝试设置此书以在IIS下运行数据库应用程序并授予 ASP.NET访问数据库。这本书的名字是:

Murach使用C#2010进行ASP.NET 4 Web编程(Murach:培训与参考)

这本书附带了两个文件:

  

运行此文件的“grant_access_windows_7_vista.bat”:“grant_access_windows_7_vista.sql”

以下是文件:

@ECHO off

:: batch file for
:: Murach's ASP.NET 4 Web Programming with C# 2010
:: company: Mike Murach & Associates, Inc.
:: date:    March 16, 2011
:: 
:: Uses SQLCMD utility to run a SQL script that grants
:: ASP.NET access to the Halloween database.

ECHO Attempting to grant ASP.NET access to the Halloween database . . . 
sqlcmd -S localhost\ -E /i grant_access_windows_7_vista.sql
ECHO.
ECHO If no error message is shown, then access has been granted to the database.
ECHO.
PAUSE

这是.sql文件:

use Halloween
go

sp_grantlogin 'IIS APPPOOL\ASP.NET v4.0'
go

sp_grantlogin 'IIS APPPOOL\ASP.NET v4.0'
go

sp_grantdbaccess 'IIS APPPOOL\ASP.NET v4.0'
go

sp_addrolemember 'db_owner', 'IIS APPPOOL\ASP.NET v4.0'
go

exit

然后我运行查询,包括单词exit,这是我得到的:

Msg 15401, Level 11, State 1, Procedure sp_grantlogin, Line 49
Windows NT user or group 'IIS APPPOOL\ASP.NET v4.0' not found. Check the name again.
Msg 15401, Level 11, State 1, Procedure sp_grantlogin, Line 49
Windows NT user or group 'IIS APPPOOL\ASP.NET v4.0' not found. Check the name again.
Msg 15401, Level 16, State 1, Line 1
Windows NT user or group 'IIS APPPOOL\ASP.NET v4.0' not found. Check the name again.
Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 75
User or role 'IIS APPPOOL\ASP.NET v4.0' does not exist in this database.
Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'exit'.

我只是一个初学者,对SQL或IIS了解不多。任何帮助这个 工作会受到极大的关注。我也会尝试通过搜索来完成我的工作 GOOGLE,但如果有人可以解释为什么这不起作用那将是幻想。

这是我尝试过的......仍然没有运气:

  

IIS 7正在尝试使用IIS应用程序池标识来访问您的SQL数据库。

     

因此,您必须首先授予对SQL Server的IIS 7 apppool访问权限。

     

为此,请进入SQL Server Management Studio - >服务器实例 - >安全 - >登录 - >新登录

     

登录名将为“IIS APPPOOL \ ASP.NET v4.0”。这是因为每次在IIS7中创建应用程序池时,它都会创建一个与应用程序池使用相同名称的标识。在您的情况下,您使用的是asp.net 4附带的默认应用程序池。

     

然后在您的数据库中,转到安全性 - >登录 - >新登录,给它一个别名,然后选择你在上一步中添加的用户对象(IIS APPPOOL \ ASP.NET v4.0),然后给它db_owner(或任何你需要的)模式/角色权限。

当我尝试上述事情时,我得到的只是这个错误:

"IIS APPPOOL\ASP.NET v4.0" is not a valid name because it contains invalid characters. (Microsoft SQL Server, Error: 15006

3 个答案:

答案 0 :(得分:2)

我也有这个问题。您必须首先在SSMS-> Security-> Logins中创建“IIS APPPOOL \ ASP.NET v4.0”的登录名,而不是直接在目标数据库上。

查看此页面我发现:http://blog.sqlauthority.com/2009/08/20/sql-server-fix-error-cannot-open-database-requested-by-the-login-the-login-failed-login-failed-for-user-nt-authoritynetwork-service/

答案 1 :(得分:0)

只需更改sql脚本即可删除IIS APPPOOL \ ASP.NET v4.0 grant命令,并将连接字符串更改为现有用户。不要把头撞到墙上。

答案 2 :(得分:0)

我知道这是一个旧帖子,但我今天在同一本书的最新版本中遇到了同样的问题。

预订:使用C#2012进行Murach ASP.NET 4.5网络编程

问题:在设置图书文件期间,grant_access脚本会返回此错误:

  

Windows NT用户或组' IIS APPPOOL \ ASP.NET v4.5'未找到。校验   这个名字。

我的设置:笔记本电脑是运行IIS 8.5和VS2013 Premium的Windows 8.1。

为了解决这个问题,我更新了grant_access脚本。

更改以下所有内容:' IIS APPPOOL \ ASP.NET v4.5' 要:' IIS APPPOOL \ .NET v4.5'

这是在IIS管理器中找到的应用程序池中的正确拼写。 (如果您的版本与我的版本不同,您应该验证机器上的拼写)

现在再次运行脚本,它应该可以工作。

先决条件:我必须在我的特定设置上注册asp.net;使用以下链接。

ASP.NET 4.5 has not been registered on the Web server

  

dism.exe / Online / Enable-Feature / all / FeatureName:IIS-ASPNET45