2012-05-14 4 views
1

Я пытаюсь подключиться к Microsoft SQL Server 2008 R2 с в Microsoft Visual Studio 2010. Моя строка подключения выглядит следующим образом:Подключение к Microsoft SQL Server с помощью 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

вы не можете использовать для этого учетную запись локального компьютера (кроме «специальных» встроенных, имеющих эквиваленты домена), вам нужно будет либо использовать учетную запись домена (или подходящую другую, такую ​​как NETWORK SERVICE) со встроенной безопасностью, ИЛИ учетную запись SQL Server. –

ответ

1

Если вы пытаетесь использовать интегрированную безопасность, строка подключения должна быть:

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

Вы затем управлять разрешениями через роли и окна групп. (Вы можете предоставить разрешения отдельных пользователей, но это не рекомендуется для управления доступом к базе данных).

ОБНОВЛЕНИЕ: Вы не упомянули в оригинальном вопросе, что это веб-приложение. Обычный способ справиться с этим - создать приложение. пул работает под известной идентичностью (например, 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 Enterprise Manager и что у него есть разрешение на вход в систему база данных. Пока вы на нем, вам также необходимо предоставить доступ к таблицам, которые вы собираетесь использовать. –

Смежные вопросы