2011-09-09 26 views
2

主要看回答我下面的問題#1,但更多的知識,將不勝感激的SQLExpress連接在IIS 7失敗W /用戶實例錯誤 - 「無法生成用戶實例

我努力在使用這些資源。我的調查,但沒有成功:

http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/f5eb164d-9774-4864-ae05-cac99740949b對於這個錯誤:無法生成SQL Server的用戶實例由於檢索用戶的本地應用程序數據路徑故障請確保用戶具有本地。計算機上的用戶配置文件,連接將被關閉,

http://social.msdn.microsoft.com/forums/en-US/sqlexpress/thread/6dfdcc22-7a81-4e8f-a947-c1ce6982d4b3/對於此錯誤:在數據庫中創建主拒絕DATABASE權限。試圖爲文件附加一個自動命名的數據庫?失敗。具有相同名稱的數據庫存在,或指定的文件無法打開,或位於UNC共享上。

問題

1),同時運行Telerik的拉德控件ASP.NET AJAX「現場演示」用IIS 7(Telerik的運行現場演示工作正常使用ASP項目爲什麼會出現這種錯誤。 NET開發服務器與此連接字符串)

由於檢索用戶的本地應用程序數據路徑失敗,無法生成SQL Server的用戶實例。請確保用戶在計算機上具有本地用戶配置文件。連接將被關閉。

2)如何在IIS中創建7不同的SQL Server Express實例,從ASP.NET開發服務器& SSMSE

3)是否有運行時不允許使用的SQL連接字符串的某些屬性網站在不同的背景下(基於#2)。

環境:

我不是通過在系統托盤彈出,並挑選一個端口ASP.NET開發服務器(功能運行「現場演示」 .NET 3.5 ASP.NET Web應用程序爲您在Visual Studio中單擊播放後)。這工作得很好!我正在IIS 7上運行該網站.SQL Server Express在控制面板>管理工具>服務> SQL Server(SQLExpress)中使用NETWORK SERVICE用戶。

使用提供與安裝的「現場演示」 Web應用程序演示項目此連接字符串:

<add name="NorthwindConnectionString" 
      connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Northwind.mdf;Integrated Security=True;User Instance=True" 
      providerName="System.Data.SqlClient" /> 

我已經嘗試設置「用戶實例=假」,但只是拋出另一個錯誤:

CREATE DATABASE權限在數據庫主服務器中被拒絕。試圖爲文件附加一個自動命名的數據庫?失敗。具有相同名稱的數據庫存在,或指定的文件無法打開,或位於UNC共享上。

(這裏是* .mdf文件的路徑 - C 「?」:\用戶\\我的文檔\ Visual Studio 2008的\項目\ TelerikDemos \ Telerik的\針對的RadControls 2011 ASP.NET AJAX Q2 \現場演示\ App_Data \ Northwind.mdf ..堆棧溢出斜體與這些字符中的一些斷開,所以我不得不刪除該路徑)

有人在上一個問題上回答我設置此「User Instance = False」,但它似乎用戶實例與無關無論您是否使用SQL Express。用戶實例只是SQL Express的一項功能,允許非特權用戶在自己的用戶上下文中託管數據庫實例。

請注意,此Northwind數據庫與* .ldf(日誌文件)一起存儲在App_Data文件夾(位於「Live Demos」根應用程序目錄下)的* .mdf文件中。我以前嘗試將* .mdf文件作爲實際數據庫附加在「數據庫」文件夾下(在SSMSE對象資源管理器樹中),但稍後將其刪除。

Web應用程序「現場演示」根文件夾(和嵌套的文件夾/文件)具有所有權限分配以下用戶:
- IIS APPPOOL \ Telerik的(「Telerik的」是我的應用程序池的名稱在IIS 7本網站)
- IUSR
- 網絡服務

做附註爲自己關於這個的SQLExpress主數據庫查詢:

SELECT * FROM sys.dm_os_child_instances

還嘗試了* .mdf & * .ldf權限的不同組合,同時還要更改SQL Server(SQLExpress)Windows 7服務(控制面板>管理工具>服務)上的用戶,並在進行這些更改後重新啓動服務。

enter image description here

重現:

下載Telerik的拉德控件ASP.NET AJAX。設置我在Program Files \ Telerik下的「Live Demos」文件夾中提到的Permimssions,將.NET版本的Web應用程序更改爲.NET 3.5,使用該文件夾中的普通web.config文件將其3.5 web.config文件關閉。你必須使用Visual Studio 2010,但我在Visual Studio 2008中運行了這個工作(我做了一些小工作,因爲我們的公司還沒有在VS2010上)。還要將正確的Bin35組件放入「Live Demos」文件夾的Bin文件夾中。編譯解決方案。創建一個IIS 7網站。添加Windows身份驗證。啓用匿名和Windows身份驗證..所有其他人都被禁用。設置應用程序池以使用Classic和32位。

然後導航到此URL並單擊「First Look」圖像。如果要求

http://localhost/combobox/examples/overview/defaultcs.aspx

====================

更多的證據將提供。

+0

我不能確定你是否:1.提出一個問題。來自「簡明英漢詞典」試圖變得有趣。無論哪種方式,我都不知道這裏的問題是什麼。 – Oded

+0

指控是在法庭上提出問題的一種奇特方式(陳述您要證明的內容)。見#1。 – MacGyver

+1

但是,SO不是法庭。大多數程序員寧願有一個簡單的描述。請在其他地方留下詩意的許可證...... – Oded

回答

2

您正在使用具有可信身份驗證= true的連接字符串。這意味着連接使用調用進程的安全上下文。

當您在開發服務器上運行時,您在登錄用戶的安全上下文中運行,所以每件事情都可以正常工作。

當您在IIS中運行時,您處於應用程序池進程的安全上下文中,該進程是NETWORK SERVICE,它沒有用戶配置文件,因此它崩潰。

您可以通過修復:

  • 更改應用程序池的身份,以一個普通用戶能夠訪問數據庫
  • 使用帶有用戶名和密碼的連接字符串
+0

感謝您的判決!幾個問題。對於你的第一個項目符號,你能詳細說明一下普通用戶嗎?由於我的Windows用戶可以訪問它,我現在可以將它用作「普通用戶」嗎?另外,對於第二個項目符號,這些是App_Data文件夾中的* .mdf文件,而不是SSMSE中的實際數據庫。使用SQL Server身份驗證是否要求我在對象資源管理器中附加* .mdf文件? SQLExpress中還需要什麼? – MacGyver

+0

你真棒!我用你的第一顆子彈來解決它。接受了這個查詢的值SELECT owning_principal_name FROM sys.dm_os_child_instances WHERE heart_beat ='alive'並使用該值(又名用戶)作爲我的Telerik應用程序池標識自定義帳戶。 – MacGyver

+2

Grats解決方案,正在跟進,看看它是否得到解決。要回答您關於附加的問題,Express會自動執行此操作,但如果您必須通過管理工作室,則可以自行附加它,但是您必須更改手頭的連接字符串。 – KreepN

相關問題