stivanov Ответов: 2

Прикрепление БД к SQL server: проблема string. format


Привет,
Я пытаюсь подключить базу данных exisitng к SQL Server 2008.
Когда я использую:
str = String.Format("EXEC sp_attach_db @dbname = '{0}',@filename1 = '{1}',@filename2 = '{2}'", databaseName, mdfFile, ldfFile);
com = new SqlCommand(str, myConn);

Я получаю сообщение об ошибке: не удается открыть физический файл "C:\TestDB\MyProgram_Data.mdf". Ошибка операционной системы 2: "2 (ошибка не найдена)".

Что я уже пробовал:

Но когда я использую:
str = "EXEC sp_attach_db @dbname = N'MyProgram' ,@filename1 = N'C:\\TestDB\\MyProgram\\MyProgram_Data.mdf',@filename2 = N'C:\\TestDB\\MyProgram\\MyProgram_Log.ldf'";

Все в порядке.

Почему я не могу использовать строку.Формат ()?

CHill60

Каковы значения databaseName, mdfFile и ldfFile? Если у них есть двойные обратные косые черты \\, то это не сработает.
Если вы поставите точку останова на com = new SqlCommand(str, myConn); делает str содержать именно то, что у вас есть в вашей версии строкового литерала?

2 Ответов

Рейтинг:
15

F-ES Sitecore

Так что это работает

C:\TestDB\MyProgram\MyProgram_Data.mdf


..-а это не так.

C:\TestDB\MyProgram_Data.mdf


Заметите разницу?

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


stivanov

Действительно :) Спасибо

Рейтинг:
11

OriginalGriff

Потому что путь неправильный:

Unable to open the physical file "C:\TestDB\MyProgram_Data.mdf".
Не работает, но:
str = "EXEC sp_attach_db @dbname = N'MyProgram' ,@filename1 = N'C:\\TestDB\\MyProgram\\MyProgram_Data.mdf'
Делает. Там есть дополнительное имя папки: "MyProgram"


stivanov

Вы правы. Спасибо :)

OriginalGriff

Пожалуйста!