由于无法检索用户的本地应用程序数据路径,无法生成SQL Server的用户实例

时间:2011-01-22 21:09:17

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

在vs2010中的

net项目我在app_data文件夹中有一个数据库和表,我创建了一个部署包,并将包导入到我本地机器上安装的iis服务器上。 现在我在尝试执行插入时收到此错误消息。

  

由于无法检索用户的本地应用程序数据路径而无法生成SQL Server的用户实例。请确保用户在计算机上具有本地用户配置文件。连接将关闭

连接字符串是:

  

Data Source =。\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ survey.mdf; Integrated Security = True; User Instance = True

在VS2010内部运行时它工作正常。

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:7)

删除User Instance=True。您不需要RANU个实例。接下来,确保SQL Server Express service account在app_data上具有正确的所需权限:

cacls <path\app_data> /E /T /G SQLServerMSSQLUser$<ComputerName>$SQLEXPRESS:F 

答案 1 :(得分:7)

本文帮助解决了这个问题:http://support.microsoft.com/kb/2002980

编辑从MSDN文章中(如果链接消失):

  

Windows 7和Windows Server 2008 R2的解决方案

     

对于在IIS 7.5下运行的所有Web应用程序,无论它们是什么   项目类型,执行以下步骤:

     
      
  1. 运行Internet信息服务(IIS)管理器工具。可以从“管理”开始菜单访问此工具,也可以通过   在Windows开始 - >搜索文本框中键入“inetmgr”并选择   inetmgr工具。
  2.   
  3. 在IIS管理器工具的左侧窗格中,展开计算机节点。单击“应用程序池”节点,以便应用程序   池显示在管理工具的主窗口中。
  4.   
  5. 如果要对ASP.NET 2.0 / 3.0 / 3.5应用程序进行故障排除,请选择“DefaultAppPool”应用程序池。对于ASP.NET v4选择   “ASP.NET v4.0”应用程序池。
  6.   
  7. 右键单击选定的应用程序池,然后选择“高级设置”
  8.   
  9. 在“高级设置”对话框中,找到名为“过程模型”的类别。该类别的第一行将是“身份”   行。
  10.   
  11. 单击“标识”行,然后单击值单元格右侧显示的小按钮。按钮   显示文字“...”
  12.   
  13. 将弹出一个名为“应用程序池标识”的对话框。在该对话框中有两个单选按钮。确保   选择了第一个标题为“内置帐户”的单选按钮。
  14.   
  15. 在单选按钮下方的下拉框中,选择“网络服务”作为标识。
  16.   
  17. 单击“确定”关闭“应用程序池标识”对话框。
  18.   
  19. 点击“确定”关闭“高级设置”对话框。
  20.   
  21. 此时,对应用程序池标识的更改将保存到IIS 7.5的配置存储中。
  22.         

    Web应用程序项目和网站的解析

         

    对于位于用户的Web应用程序项目(WAP)和网站   Documents文档在作为NETWORK运行的任何IIS版本下托管的文件夹   服务,执行以下步骤:

         
        
    1. 首先确认IIS已配置为作为NETWORK SERVICE运行。这是IIS6和IIS7上的默认设置。但是,如果你是   在Windows 7或Window Server 2008 R2上运行首先需要   按照上面“Windows 7和Windows Server的解决方案”中的步骤操作   2008 R2“使IIS应用程序池作为NETWORK SERVICE运行。
    2.   
    3. 在命令提示符下,键入net stop iisadmin / y。这将导致任何正在运行的ASP.NET WAP应用程序关闭。
    4.   
    5. 退出所有正在运行的Visual Studio实例。
    6.   
    7. NETWORK SERVICE必须被授予对位于用户的Documents文件夹中的顶级Visual Studio文件夹的读取权限。该   Visual Studio文件夹将具有不同的名称,具体取决于   版本:“Visual Studio 2005”,“Visual Studio 2008”或“Visual   Studio 2010“。
    8.   
    9. 必须为您的项目的顶级项目文件夹授予NETWORK SERVICE读取和写入权限。例如,如果你的WAP   项目被称为“MyCustomWebProject”,然后是文件夹   “Documents \ Visual Studio 20xx \ Projects \ MyCustomWebProject”需要   具有NETWORK SERVICE的读写访问权限。或者,如果你的   webiste项目称为“MyCustomWebProject”,然后是文件夹   “Documents \ Visual Studio 20xx \ Websites \ MyCustomWebProject”需要   已启用NETWORK SERVICE的读写访问权限。
    10.   
    11. 必须为网络服务授予对Web项目目录中的App_Data文件夹的读写权限   结构
    12.   

答案 2 :(得分:3)

ENVIROMENT的解决方案:

Win 7,IIS 7.0,Visual Studio 2010,Database.mdf文件

打开网络配置并检查conexion字符串:

重要的是,请确保AttachDbFilename后面没有C:\ inetpub \&lt;&gt; \ App_Data \

<add name="conexion" 
    connectionString="Data Source=.\SQLEXPRESS;
    AttachDbFilename=|DataDirectory|Database.mdf;
    Integrated Security=True;
    User Instance=True" />

在IIS 7.0中转到ApplicationPools,找到为应用程序创建的应用程序池。

  • 点击高级设置
  • 转到身份并打开它选择自定义
  • 帐户并设置PC或服务器用户管理员帐户

然后转到IIS 7.0中的WebSite并单击它......

  • 找到并双击“身份验证”图标
  • 单击“匿名身​​份验证”并选择“编辑”,然后选择“应用程序池标识”

    找到ASP.NET模拟并编辑,选择指定用户,然后输入凭据。

重启IIS: cmd&gt; IISRESET / NOFORCE 或单击重置图像按钮

答案 3 :(得分:3)

我的解决方案是

   - On IIS ->> Application pool
   - Select Default App Pool (it may be different of your website, please choose your pool)
   - Advanced setting
   - Identity: ApplicationPoolIdentity
   - Load user profile: change to true Restart IIS

答案 4 :(得分:0)

RUN-&GT; INETMGR-&GT;
转到“站点”选择您的站点
然后转到右侧面板,查找&#34;基本设置&#34;
然后点击&#34;连接为&#34;然后选择&#34;特定用户&#34;然后点击&#34;设置&#34;
输入本地PC用户名和密码然后单击&#34;确定&#34;

然后点击&#34;测试设置&#34;如果你看到两个选项都是绿色,那么确定。
问题解决了 享受...