2015-10-26 290 views
0

我剛剛開始使用SQL Server Express,它在語法上與任何其他版本的SQL Server相同,但是,我使用我的web.config文件創建連接字符串並與我的代碼連接,但是我一直在的連接到SQL Server Express

錯誤類型「System.Data.SqlClient.SqlException」的一個例外,在System.Data.dll中發生,但在用戶代碼中沒有處理
其他信息:無法打開數據庫「TestSQL」所要求登錄。登錄失敗。

這是我的語法,我正在使用Windows身份驗證。如果我用這個信息登錄服務器本身,我可以查詢,但通過語法訪問它不起作用。一旦我的con.Open()行被擊中,就會拋出錯誤。

web.config

<connectionStrings> 
    <add name="SQLServer" 
     connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TestSQL;User ID=windowslogin; password=windowspassword; Integrated Security=True;" 
     providerName="System.Data.SqlClient"/> 
</connectionStrings> 

C#代碼:

public DataSet GetItems() 
{ 
    connectionstring = ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(connectionstring)) 
    { 
     con.Open(); 
     using (SqlCommand command = new SqlCommand("Select [field1] from [TestSql].[dbo].[Table1]", con)); 
     con.Close(); 
    } 
} 

編輯

我更新了我的web.config文件,這行代碼,現在它正呈現一個新的錯誤如下所示。另外,我使用UltiDev Web App的瀏覽器來承載不是IIS

web.config

<system.web> 
    <identity impersonate="true" userName="windowsusername" password="windowspassword" /? 
</system.web> 

而且新的錯誤是:

信息:用戶登錄失敗'。

+0

數據庫確實存在嗎?用戶是否被允許訪問該數據庫? – Paolo

+0

@Paolo - 是數據庫存在,並且是用戶可以完全訪問該數據庫 –

+0

從連接字符串中刪除'user instance = true' ... –

回答

4

使用IntegratedSecurity時,您無法傳遞用戶名和密碼,如果沒有它,您將無法使用「windows」用戶帳戶。您需要使用SQL登錄(在SQL Express中可能但不容易)或運行具有數據庫相應權限的用戶的asp.net站點(或impersonate)。

+0

@ D斯坦利 - 我刪除了IntegratedSecurity並仍然是相同的錯誤。我傳遞的用戶名可以完全訪問數據庫... –

+1

@RashidAbib用戶ID和密碼只適用於_SQL帳戶_,而不是Windows帳戶。 SQL Express將使用嘗試連接的進程的身份,您可以在ASP.NET中模擬該身份(請參閱答案中的鏈接)。 –

+0

@RashidAbib雖然微軟允許模仿[避免在ASP.Net中使用模擬](http://www.hanselman.com/blog/AvoidUsingImpersonationInASPNET.aspx)。 –

相關問題