2012-05-14 110 views
1

我試圖從Microsoft Visual Studio中連接到Microsoft SQL Server 2008 R2連接到Microsoft SQL Server 2010我的連接字符串如下:從Visual Basic

connection = New SqlConnection("Server=localhost;Database=greenapplication;User ID=WindowsID;Password=WindowsPassword")

我不斷收到此異常信息:System.Data.SqlClient.SqlException:

Login failed for user 'WindowsID'.

我在做什麼錯?是否有必須設置的某些權限?

+0

WindowsID是否指向Windows域帳戶?如果是這樣,你正嘗試使用集成安全性(不正確)。 –

+0

不,WindowsID在與Visual Studio和Microsoft SQL Server相同的機器上引用本地帳戶。 – Kruug

+0

您無法使用本地計算機帳戶(除了「特殊」內置計算機具有相同的域名),您需要使用具有集成安全性的域帳戶(或其他合適的網絡服務)或一個SQL Server帳戶。 –

回答

1

如果你要使用集成安全性,連接字符串應該是:

"Server=localhost;Database=greenapplication;Trusted_Connection=True" 

然後,您可以通過角色和Windows組管理權限。 (您可以授予個人用戶權限,但這不是管理數據庫訪問的推薦方式)。

UPDATE:您忽略了在原始問題中提到這是一個Web應用程序。處理這個問題的通常方法是創建一個應用程序。以已知身份運行的池(如NETWORK SERVICE),然後爲該標識賦予數據庫所需的權限。

下面是一個例子:

-- Create a SQL Server login for the Network Service account 
sp_grantlogin 'NT AUTHORITY\Network Service' 

-- Grant the login access to database 
USE MyDB 
GO 
sp_grantdbaccess 'NT AUTHORITY\Network Service', 'Network Service' 

-- Add user to read only database role 
USE MyDB 
GO 
sp_addrolemember 'db_datareader', 'Network Service' 

如果你堅持要用在連接字符串中的用戶名和密碼的傳球不太安全的方法,使用SQL Server登錄:

+0

我現在得到這個錯誤:System.Data.SqlClient.SqlException:用戶'IIS APPPOOL \ DefaultAppPool'登錄失敗。 – Kruug

+0

對不起,但這仍然沒有任何結果。 – Kruug

0

,因爲你說 「WindowsPassword」,我想你可能應該使用此連接字符串:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

我還告訴訪問該網站:

http://www.connectionstrings.com

+0

我現在得到這個錯誤:System.Data.SqlClient.SqlException:登錄失敗,用戶'IIS APPPOOL \ DefaultAppPool' – Kruug

+1

您需要確保此用戶是在SQL企業管理器中配置的,並且它有權登錄到數據庫。當你處於這個狀態時,你還需要授予它對你打算使用的表的訪問權限。 –