Использование MS SQL SERVER 2008 R2 EXPRESS с C # Windows? - PullRequest
0 голосов
/ 13 сентября 2011

Я создал приложение ac # windows (2.0 framework), которое использует базу данных MS SQL.
Во время разработки я использовал MS VISUAL STUDIO 2010 и SQL 2008 MANAGEMENT STUDIO.
Моя строка подключения во время разработки:

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=SL;Integrated Security=True");

Все отлично работает ....

Теперь я хочу запустить это приложение на клиентской системе.
Итак, MS SQL SERVER 2008 EXPRESS успешно установлен на клиентской системе.
Остановил службы sql моей системы, скопировал файлы .mdf и .ldf с моей машины и вставил в «c: \ Database \» клиента.Но во время работы возникает проблема.

При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске указанного сервера / экземпляра)

Строки подключения, которые я пробовал много раз:

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True");

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass");

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS; AttachDbFilename =C:\\Database\\SL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

Когда яиспользуйте User ID=sa;Password=pass в строке подключения, я получаю:

аутентификация не удалась для 'sa'

Я пропустил некоторые шаги или сделал ошибку?Пожалуйста, скажите мне, что мне делать после копирования базы данных из моей системы.Какой должна быть строка подключения в C #?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 13 сентября 2011

Вы только что скопировали файлы, необходимые для вложения базы данных в SQLExpress, ознакомились с использованием OSQL или альтернативно установили клиентские инструменты на ПК, на котором установлен SQLExpress, и подключили базы данных.

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

Прежде всего, обязательно ознакомьтесь с ответом Среса .
Если вы не указали SQL Server в строке подключения присоединить вашу базу данных (с AttachDbFilename, как в третьем примере), вы должны выполнить присоединение, как он сказал.

Относительно ваших трех примеров строки подключения: все они работают только при определенных обстоятельствах. Вы можете проверить connectionstrings.com .

Вот ваши три строки подключения, а также краткие пояснения их проблем:

Data Source=.\MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True

-> Используется текущий пользователь Windows, под которым работает ваше приложение. Таким образом, текущий пользователь Windows должен иметь права доступа к базе данных на компьютере клиента.

Data Source=.\MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass

-> При этом используется специальная учетная запись пользователя 'sa'. Для того чтобы это работало, вы должны убедиться, что выполнены следующие условия:

Но это не лучшее решение в любом случае. 'sa' - это учетная запись администратора с полными разрешениями, и вам не следует использовать учетную запись администратора для доступа к SQL Server через ваше приложение.
Если вы действительно хотите использовать аутентификацию SQL Server (вместо аутентификации Windows), лучше создать новую учетную запись с минимальными необходимыми разрешениями, необходимыми вашему приложению.

Data Source=.\MSSQLEXPRESS; AttachDbFilename =C:\Database\SL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

-> та же проблема, что и с первой строкой соединения (текущий пользователь Windows должен иметь разрешения). Кроме того, User Instance=True должен быть включен в SQL Server.
Цитата connectionstrings.com :

Чтобы использовать функциональность User Instance, необходимо включить ее на SQL Server. Это делается с помощью следующей команды: sp_configure 'пользовательские экземпляры включены', '1'. Чтобы отключить функциональность выполнить sp_configure 'пользовательские экземпляры включены', '0'.

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

Вы уверены, что новое имя экземпляра - «MSSQLEXPRESS»?

Мой экземпляр R2 Express называется 'SQLEXPRESS' (на самом деле это связано с известной ошибкой в ​​ установщике ).

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

...