2012-09-04 3 views
2

Я использую эту строку подключения SQL:SQL Строка соединения с использованием SQL аутентификации

string connection = "data source=OSBORNECHARLES2;initial catalog=TWO; 
integrated security=False;User ID=userid;Password=PWD"; 

Я получаю эту ошибку:

A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

Если установить integrated security=True; он работает.
Если я вхожу в систему с другим пользователем окна, я получаю ошибку.

Не могли бы вы рассказать мне, почему я получаю эту ошибку.

+1

Возможно, пользователь, с которым вы регистрируетесь, не имеет прав для этого db. Попробуйте подключиться через студию управления. И, возможно, ваш экземпляр - это именованный экземпляр канала. Следовательно, имя может быть как ' \ ' – deostroll

ответ

2

Я собираюсь рискнуть здесь. Я бы предположил, что ваш экземпляр SQL установлен только для Windows \ Integrated logins. Пользовательский пароль \ пароль, который вы устанавливаете в строке подключения, предназначен только для входа в систему SQL, вы не можете передавать другим пользователям Windows таким образом. Казалось бы, вы пытаетесь сделать олицетворение с использованием строки подключения. Хотелось бы, чтобы все было так просто.

Таким образом, вам, вероятно, потребуется включить защиту в смешанном режиме в вашем sql-экземпляре и создать учетные записи для этого пользователя, или вы должны олицетворять пользователя Windows в своем приложении, а затем использовать интегрированную защиту.

1

Я думаю, что вы можете использовать этот

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword; 
+0

Почему? В чем разница? Как конкретно это помогает с сообщением об ошибке? – dakab

0

Я знаю, что это старый вопрос, но то, что поставщик ты использовал. Согласно сообщению this, «SSPI» работает как с SQLClient, так и с Oledb, тогда как «true»/«false» работает только с SQLClient.

Here's еще одно полезное сообщение на эту тему, в котором объясняется, что использование «SSPI» или «true» приведет к попытке использовать учетные данные Windows для текущего пользователя.

Я согласен с некоторыми другими комментариями. Возможные причины: 1) Аутентификация SQL не включена на сервере. Для устранения неполадок можно выполнить следующие действия: a. Попробуйте получить доступ через SQL-аутентификацию через SSMS. Если он преуспеет, чем вы знаете, включена проверка подлинности SQL. 2) Пользователь, с которым вы пытаетесь войти с ошибкой, не имеет разрешения. a. Убедитесь, что у пользователя есть главный сервер. В качестве дополнительной меры (хотя я не думаю, что это важно) убедитесь, что главный сервер привязан к основному объекту базы данных в своей базе данных по умолчанию.

Если это удаленный сервер, вам необходимо включить все необходимые службы, которые могут быть выполнены в диспетчере конфигурации SQL Server.

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