2012-05-14 82 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企业管理器中配置的,并且它有权登录到数据库。当你处于这个状态时,你还需要授予它对你打算使用的表的访问权限。 –