我正在使用SQLServer2005和VS2008。我在web.config中的连接字符串是:
add name="library" connectionString="Data source=KMT; Initial Catalog=Library;Integrated Security=SSPI"
此处,KMT是我的服务器名称,Library是我的数据库。
当我通过VS2008 localhost运行我的页面时,没关系。但是,通过IIS查看时,它会显示错误消息,例如“登录用户失败,'KMT / ASP.NET'”。我的sqlserver身份验证模式是windows,它在web.config中没问题。什么是解决方案?
答案 0 :(得分:2)
使用“集成安全性”意味着使用运行该进程的用户的身份登录数据库。运行本地VS Web服务器时,它将作为您的登录名运行。但在IIS中,Web服务器工作进程作为预定义的用户帐户运行。 您的工作进程标识必须具有SQL Server和数据库的权限。
检查IIS中应用程序池的属性。例如,如果您以网络服务身份运行,请进入SQL并创建新用户,输入网络服务作为Windows用户名,并将该用户权限授予您的数据库。
答案 1 :(得分:2)
我的一位朋友帮我解决了这个问题 我执行SQL以添加ASPNET作为登录 我的数据库和设置DA权限
exec sp_grantlogin N'MACHINE \ ASPNET' exec sp_defaultdb N'MACHINE \ ASPNET',N'Database' 使用数据库 exec sp_grantdbaccess N'MACHINE \ ASPNET',N'ASPNET' exec sp_addrolemember N'db_owner',N'ASPNET'
这里MACHINE是机器名,数据库是我的数据库名。 但通过此ASPNET用户总数 控制该数据库。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您使用Integrated Security = SSPI,则使用当前用户的凭据(在VS中将是您的凭据)连接到SQL Server。
从IIS应用程序中,与IIS服务关联的用户用于登录。
解决方案:
为IIS服务分配一个允许连接到SQL的特殊用户
使用SQL Server身份验证访问数据库,并在连接字符串中存储用户名/密码
答案 4 :(得分:0)
您打算使用ASP.NET系统帐户还是用户Windows帐户?
如果是后者,则需要impersonation。如果SQL和IIS在同一台机器上,那么这是有效的,否则它是一个双跃点,需要一些非常重要的工作来设置委派。
答案 5 :(得分:0)
如果服务器是Windows 2003,您可以向网络服务授予访问SQL Server的权限