gpt4 book ai didi

sql-server - 在 App_Data 文件夹中使用 sql 数据库发布 mvc 网站

转载 作者:行者123 更新时间:2023-12-04 18:46:59 24 4
gpt4 key购买 nike

我将我的 mvc4 应用程序发布到我的本地 IIS,它可以与我的 app_data 文件夹中的 SQL Server Express 数据库一起正常工作。但是,当我将它发布到我在 Internet 上的 FTP 站点并运行它时,它出错了。它似乎没有连接到 app_data 文件夹中的数据库。我知道要让它在我的本地 IIS 上运行,我需要授予它网络服务权限。我是否需要联系我的 Internet 托管以授予对此文件夹的权限,或者我是否需要更改 web.config 连接字符串?

错误:建立与 SQL Server 的连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口(interface),错误:26 - 定位指定的服务器/实例时出错)

最佳答案

只要您的应用程序池帐户具有 SQL Express 的权限,就可以了。

您需要考虑以下几点:

  • 你在使用用户实例吗?和/或
  • 您的应用程序池是否作为应用程序池标识在 IIS 7 上运行?

用户实例

我猜它正试图附加到 user instance (see the ADO.NET reference here as well)。如果您不确定,请查看您的连接字符串是否包含

User Instance=true;AttachDBFilename=|DataDirectory|\InstanceDB.mdf

MSDN 上有一篇关于在 asp.net 中使用 SQL 数据库的精彩文章,名为 "Using SQL Server Express with ASP.NET" , 重复整个事情太长了。虽然它谈到了一般使用它,但这些原则也适用于部署,并涵盖用户实例。

如果是这种情况,您正在使用用户实例,那么您还需要检查是否安装了 SQL Server 以允许它们。您可以通过运行 sp_configure 来完成此操作查看设置:

exec sp_configure 'user instances enabled'

如果它返回“1”,那么你已经启用了用户实例,如果没有,那么 exec sp_configure 'user instances enabled', '1' 将启用它们(并使用 '0' 禁用它们)。

用户实例并不总是最佳选择,因此在执行此操作之前,请检查您是否不想使用普通实例。

IIS 7 应用程序池标识

随着 IIS 7 的推出 application pool identites .有时您需要授予他们访问 sql server 的权限:

  • 确保您的应用程序池已启动(这很重要)(浏览至网站主页)
  • 打开 SQL Server Management Studio (SSMS)
  • 转到安全 -> 在服务器级别登录
  • 右键单击,单击创建新登录名
  • 在登录字段中,键入 IIS APPPOOL\MyAppPoolName 并创建用户(设置您需要的任何其他设置)
    • 我在这里不使用搜索功能,但只要应用程序池正在运行,名称就会进行验证,因此您可以根据需要进行验证。
  • 转到您的数据库并将登录名添加为具有适当权限的数据库主体
    • db_owner 对于生产系统来说有点激进,但在创建新表等时最容易上手,然后您可以将其向下拨到数据读取器、写入器等)

或者,您可以运行:

CREATE LOGIN [IIS APPPOOL\MyAppPoolName] FROM WINDOWS;
USE MyDatabase
GO
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPoolName];
EXEC sp_addrolemember N'role_name', N'MyAppPoolUser' -- role name could be db_owner

应用程序池标识现在是最佳实践,应尽可能使用(在某些情况下不可行,例如多服务器设置)。

其他错误 - 应用程序池标识和用户实例

如果您看到错误“由于读取注册表项失败而无法生成 SQL Server 的用户实例。连接将被关闭” 那么您的 IIS 应用程序池也有问题身份和用户实例。要解决此问题:

  • 转到 IIS 管理器
  • 转到应用程序池的高级设置
  • 在流程模型下,点击“加载用户配置文件”

还有一篇关于这些和用户实例的 iis.net 文章称为 "Application Pool Identities and SQL Server Express" (Thomas Demi)这很有用。

关于sql-server - 在 App_Data 文件夹中使用 sql 数据库发布 mvc 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16828364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com