/ / Використання MS SQL SERVER 2008 R2 EXPRESS із програмою C # Windows? - c #, sql, sql-server-express

Використання MS SQL SERVER 2008 R2 EXPRESS з додатком C # Windows? - c #, sql, sql-сервер-експрес

Я створив програму c # windows (фреймворк 2.0), яка використовує базу даних 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: База даних" клієнта. Але під час бігу виникає проблема.

Помилка, пов’язана з мережею або з конкретним випадкомсталася в той час встановлення з'єднання з 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 #?

Дякую !

Відповіді:

2 для відповіді № 1

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


1 для відповіді № 2

Перш за все, не забудьте перевірити Sres "відповідь.
Якщо ви не кажете 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". Для того, щоб це працювало, вам слід переконатися, що виконуються наступні передумови:

  • Змішаний режим автентифікації має бути налаштовано (якщо ви цього не робите, у вас є лише автентифікація Windows, а "sa" - це ім'я користувача для автентифікації SQL Server)
  • потрібно вказати пароль "sa", і, звичайно, він повинен бути таким же, як на машині розробки.

Але це все-таки не найкраще рішення. "sa" - це обліковий запис адміністратора з повними дозволами, і ви не повинні використовувати обліковий запис адміністратора для доступу до SQL Server із вашим додатком.
Якщо ви дійсно хочете використовувати автентифікацію SQL Server (замість автентифікації Windows), краще створити новий обліковий запис із мінімально необхідними дозволами, необхідними для вашої програми.

Data Source=.MSSQLEXPRESS; AttachDbFilename =C:DatabaseSL.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 для відповіді № 3

Ви впевнені, що новим ім'ям екземпляра є "MSSQLEXPRESS"?

Мій екземпляр R2 Express називається "SQLEXPRESS" (це насправді пов'язано з відомою помилкою в монтажник)

Можливо, ви захочете перевірити, чи екземпляр насправді називається тим, що ви думаєте.