2015-10-26 5 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(); 
    } 
} 

EDIT:

Я обновил свой web.config файл, чтобы иметь эту строку кода и теперь представляет новую ошибку показано ниже. Кроме того, я использую UltiDev Web App Explorer, чтобы не размещаем IIS

web.config:

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

И новая ошибка:

Дополнительная информация: Логин не удалось для пользователя ''.

+0

действительно ли база данных существует? разрешено ли пользователю получать доступ к этой базе данных? – Paolo

+0

@Paolo - Да, база данных существует, и да, у пользователя есть полный доступ к этой базе данных. –

+0

. Отбросьте 'user instance = true' из строки подключения ... –

ответ

4

Вы не можете передавать имя пользователя и пароль при использовании IntegratedSecurity, и вы не можете использовать учетные записи «окон» без него. Вам необходимо использовать SQL-логины (что возможно, но не легко в SQL Express) или запустить сайт asp.net (или impersonate), который имеет соответствующие права на базу данных.

+0

@ D Stanley - я удалил IntegratedSecurity и по-прежнему ту же ошибку. Имя пользователя, которое я передаю, имеет полный доступ к базе данных ... –

+1

@RashidAbib 'User Id' и' Password' работают только для _SQL Accounts_, а не учетных записей Windows. SQL Express будет использовать идентификатор процесса, пытающегося подключиться, который вы можете олицетворять в ASP.NET (см. Ссылку в ответе). –

+0

@RashidAbib хотя Microsoft разрешает олицетворение [избегать использования олицетворения в ASP.Net] (http://www.hanselman.com/blog/AvoidUsingImpersonationInASPNET.aspx). –