2010-08-29 2 views
3

На моем компьютере разработки У меня есть MS SQL Server/Visual Studio 2005. Моя программа может правильно подключиться к моей локальной базе данных и использовать ее. Однако мой другой компьютер (не-dev) не имеет MS SQL Server/Visual Studio 2005 и не подключается к БД. Он выплевывает следующее:C# Подключение к локальному файлу базы данных MDF

«Ошибка при подключении к серверу. При подключении к SQL Server 2005 этот сбой может быть вызван тем, что при настройках по умолчанию SQL Server не разрешает удаленные подключения . ... "(Ошибка: 26).

Означает ли это, что я должен установить SQL Server 2005 на свои компьютеры, не являющиеся dev-dev? Есть ли другой путь?

Моя строка соединения:

"Источник данных = \ SQLEXPRESS; AttachDbFilename = \".» + Directory.GetCurrentDirectory() + "\ DB.mdf \"; Integrated Security = True; Instance Пользователь = True ";

ответ

1

Ваша строка соединения говорит Native Client ADO.NET Provider Sql Server, чтобы попытаться подключиться к экземпляру Sql сервера с именем SQLEXPRESS, который будет управлять базой данных, хранящейся в файле DB.mdf. Поскольку на вашем клиентском компьютере не установлен Sql Server Express, он не сможет найти базу данных для подключения.

Вам нужно будет:

  • Установка SQL Server на клиентском компьютере и развернуть там свою базу данных.
  • Переключитесь на Sql Server Compact Edition (SqlCE - встроенная база данных) и перепроектируйте приложение для использования портативного файла базы данных (с SqlCE).
  • Канава с использованием надежный механизм базы данных и переключатель полностью ADO.NET DataSets, сохранение/загрузка содержимого DataSet в файл XML (с помощью WriteXml() и ReadXml()). Если объем данных, которые вы обрабатываете, довольно ограничен по размеру, DataSets - хороший подход к поддержанию целостности (посредством строго типизированной и четко определенной схемы) и переносимости.
1

Да, вам нужны MS-SQL (Express), доступные на ваших целевых компьютерах. Либо локальная установка, либо подключение к серверу.

Не так сложно включить SQl Express в Setup.exe (см. PreRequisites).

Альтернативой является использование SQL-CE или Sqlite или (даже) MS-Access. Они являются «встроенными» механизмами базы данных, поэтому вам нужно только распространять библиотеки DLL.

+0

Это выглядит многообещающим, спасибо! – Exegesis

+0

Я преобразовал в SQLCE ... теперь Visual Studio добавляет System.Data.SqlServeCe.dll к выходному пути. Удаление этой dll явно создает исключение. Но когда я копирую вывод с DLL-файлом на не-dev-компьютер, он выплевывает ту же ошибку, что и ее запуск без DLL. Кто-нибудь знает, почему это может произойти? – Exegesis

+0

Плата SqlServerCe обычно устанавливается в GAC. Использовать его отдельно не рекомендуется, но: скопируйте DLL в свою исходную папку (не \ bin \), добавьте ссылку на _that_ dll и убедитесь, что установлен CopyLocal. Это может зависеть от других DLL, но вам нужно жесткое (er) совпадение в Fx-версии. –

2

Если вы хотите запустить его на этом другом ПК/сервере, вам также понадобится SQL Server (необходимо приложить к нему файл .mdf) или SQL Server Express.

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

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