Проблема доступа к базе данных SQL Server 2008 R2 по сети - PullRequest
1 голос
/ 28 сентября 2011

Я только что закончил свое приложение на c # с базой данных sql, созданной в версии 2008 r2

Я хотел бы поделиться этой базой данных по локальной сети, и моя строка подключения:

ConnectionString = @"Data Source=192.168.0.1,1433\SQLEXPRESS;user id=Rula; password=marojo;AttachDbFilename=\\192.168.0.1\Release\WEPA.mdf;Connection Timeout=30;Integrated Security=SSPI;user instance=true";

, где 192.168.0.1 - IP-адрес компьютера, на котором размещен экземпляр sqlexpress

когда я подключаюсь к базе данных локально с хост-компьютера, я не получаю ошибок, но при попытке подключиться к базе данных из общего приложения я получаю следующую ошибку:

У пользователя нет прав на выполнение этого действия.

пока я сопоставлял пользователя GUEST со своей базой данных на хост-компьютере, поскольку знал, что если компьютер попытается подключиться к базе данных удаленно, он подключится как гость.

обратите внимание: мое приложение и база данных совместно используются по сети в одной папке, и снова локально все в порядке

Пожалуйста, что я могу сделать, чтобы решить эту проблему ???? заранее спасибо = -)

Ответы [ 5 ]

3 голосов
/ 28 сентября 2011

Если 2 машины не находятся в одном домене, произойдет сбой. Возможно, вы захотите использовать sql логины

1 голос
/ 29 сентября 2011

Хорошо, я вижу пару неверных вещей в вашей строке подключения.

А именно, вы определили идентификатор пользователя и пароль ... затем вы продолжаете устанавливать флаг Integrated Security. Это взаимоисключающие. Либо он подключается как тот же пользователь, под которым выполняется приложение (скорее всего, учетная запись пользователя пула приложений), либо он подключается как пользователь, определенный в строке подключения.

Причина, по которой вы видите разницу между 7 и XP, заключается в том, что один из них по умолчанию использует идентификатор пользователя / пароль, а другой - встроенную защиту.

Я предлагаю вам посетить http://www.connectionstrings.com/, чтобы создать правильную строку подключения.

Обновление:

Другие вещи, которые я вижу. Во-первых, AttachDbFilename может работать только с интегрированной безопасностью. Очевидно, что это невозможно, поэтому вам нужно избавиться от этого параметра и настроить sqlexpress непосредственно на сервере, чтобы настроить таргетинг на этот файл базы данных.

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

В-третьих, прочитайте это: http://msdn.microsoft.com/en-us/library/ms247257(v=VS.100).aspx

1 голос
/ 28 сентября 2011

Гостевая учетная запись не будет использоваться в доверенном соединении. Интегрированное соединение использует учетную запись пользователя, присоединенную к процессу с использованием строки соединения.
http://forums.asp.net/t/822604.aspx/1

Если вы хотите использовать встроенную защиту, необходимо настроить веб-сервер для обработки входов в систему, а затем вам необходимо предоставить доступ всем (потенциальным) аутентифицированным пользователям к базе данных. Обычно это не делается из-за ненужной сложности, которую вы добавляете в процесс. Просто используйте sql ссылки, как указано Али, и покончим с этим.

0 голосов
/ 04 октября 2011

проблема решена !!

была проблема с подключением, когда база данных подключена к студии управления сервером sql, она связана со старым именем или связана с компьютером, с которого она скопирована

Спасибо всем за ваши усилия:)

0 голосов
/ 28 сентября 2011

Это может происходить по нескольким причинам:

  1. Служба браузера SQL не включена
  2. Строка соединения, использующая доверенное соединение, и вы не настроены в качестве этого пользователя (проверьте, какой пользователь использует ваш код, получив Пользователь из текущего контекста)
  3. У вас не установлены те же протоколы на клиенте (менее вероятно)

Поскольку это проблема с разрешениями, вам, скорее всего, придется настроить учетную запись домена Windows в базе данных, чтобы использовать ее. Если это не вариант для пользователей приложения, вы можете перейти к учетной записи sql, а не к учетным записям Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...