2016-05-28 6 views
2

У меня есть база данных и серверное приложение, и все работает нормально, пока я запускаю его на своем компьютере.Ошибка подключения базы данных SQL на другом компьютере через | DataDirectory |

string ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename='|DataDirectory|\Fabrica.mdf';Integrated Security=True;Connect Timeout=30"; 

Проблема в том, что я должен запустить это приложение на другом компьютере, и база данных должна быть там, а также, когда серверное приложение пытается получить доступ к базе данных она ничего не возвращает. Это проблема с аутентификацией? Путь к файлу?

@Edit: вот как я доступа к таблицам:

SqlConnection con = new SqlConnection(ConnectionString); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = con; 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = String.Format("SELECT * FROM {0}", Table); 
string name; 
SqlDataReader reader; 
try 
{ 
    con.Open(); 
    reader = cmd.ExecuteReader(); 
    while (reader.Read()) 
    { 
     name = reader["Name"].ToString(); 
    } 
    con.Close(); 
} 
catch (Exception e) 
{ 
    MessageBox.Show(e.ToString()); 
} 

@Edit: Я не знаю, если это помогает, но у меня есть SQL Server LocalDB и SQL Server Express установлен на другом компьютере.

+0

проверить исключение, убедитесь, что вы Fabrica.mdf в соответствующей папке и и SQL сервера LocalDB установлен –

+2

Start, открыв SQL Server Management Studio (SMSS), который поставляется с SQL Server. В окне входа в систему есть экземпляр сервера. Убедитесь, что ваше приложение использует одно и то же имя экземпляра.Затем с помощью браузера SMSS откройте вкладку базы данных и проверьте имя базы данных на сервере. Не используйте имя файла mdf в строке подключения. Это не требуется и может вызвать проблемы с учетными данными. – jdweng

+0

@AdilAhamed Я попробовал, не исключение. –

ответ

1

Важное значение имеют как авторизация, так и путь к файлу.

LocalDB установлен на компьютере A и LocalDB, SQL Sever Express установлен на компьютере B (Server)?

LocalDB - это то, что означает «Local». Это означает, что если вы хотите переместиться на другой компьютер, вам необходимо повторно локализовать LocalDB на компьютер B.

Ручной способ осложнен, что вам нужно отделить LocalDB от сервера LocalDB на компьютере A (ALTER DATABASE IMMEDIATE ROLLBACK необходимо сделать заранее) и скопировать файл LocalDB на компьютер B и прикрепить файл LocalDB к серверу LocalDB на компьютере B. И путь attachDBfile должен указывать правильный путь. | DataDirectory | это каталог данных приложения Server, и это не каталог выполнения приложения Server. И важно, что процесс отсоединения и присоединения необходим из-за владения LocalDB.

В отличие от сложного ручного способа, я рекомендую автоматический способ добавления файла LocalDB .mdf в проект приложения Server и убедитесь, что свойство «content» и «copy if newer» или «copy always». Используйте автоматически предоставленную строку соединения, но просто измените ее на | DataDirectory |. Если вы разворачиваете приложение Server, то LocalDB будет также развернут в каталоге данных приложения Server, и право собственности на LocalDB будет автоматически изменено на компьютер B.

Я не уверен, как вы сделали заявку отлично работает в компьютере A с | DataDirectory | и хотите сообщить о значении LocalDB и о значении | DataDirectory | и connectionstring.

Согласно моему сложному опыту, и это мое личное мнение, что если вы используете DataDirectory |, вы можете читать (выбирать), но вы не сможете вставлять (изменять) данные. Это означает, что нам нужно установить (вставить) все данные, прежде чем мы добавим LocalDB в проект для использования в качестве | DataDirectory |.

В качестве справки, я имею в виду, что я установил (вставил) уже зафиксированные большие данные в LocalDB и добавил его в проект перед развертыванием, и я закодировал свое приложение для создания нового другого LocalDB после развертывания для функции вставки (изменения).

Также, пожалуйста, обратитесь к моему ответу кому-то еще.
Not inserting data into database and not getting any error