2012-03-06 3 views
0

Это запрос, в котором я получаю ошибкуПолучение ошибки в CreateTableCommand.ExecuteNonQuery();

CreateTableCommand.CommandText = "BACKUP DATABASE Test" + 
          "TO DISK = 'C:\backup\t1.bak'" + 
           "WITH " + 
          "NOFORMAT, " + 
          "COMPRESSION," + 
          "NOINIT, " + 
          "NAME = N't1-Full Database Backup'," + 
          "SKIP, " + 
           "STATS = 10;"; 

и ошибка «Неправильный синтаксис около„DISK“.» но если я запускаю запустить этот запрос MS SQL Server 2008 свою работу отлично, но когда я пытаюсь использовать это в моей C# приложения он дал ошибку пожалуйста помогите мне

+0

Я переформатировал ваш код. Попробуйте использовать функции форматирования. Ошибки, такие как ваши, становятся довольно очевидными. Более того, читать гораздо проще. –

ответ

1

Добавить еще один пробел после Test, ваш SQL построен на ... TestTO DISK ....

string line2 = "BACKUP DATABASE Test "; 

Как Onots отметил, вы должны также избежать некоторых символов должным образом (\ вводит последовательность эвакуации, \ сами прибегут, как \\):

string line2 = "TO DISK = \'C:\\backup\\t1.bak\'"; 

Смотрите также MSDN: string (C# Reference) для деталей.

+1

Также символ \ в строке будет рассматриваться как escape-символ. \ b и \ t, вероятно, не то, что он хотел. – Onots

+0

Cheers mate действительно работает, и я также забыл использовать \\ спасибо, но теперь есть еще одна проблема, когда я запускаю этот запрос из студии управления сервером sql, он создает файл размером 1,186 kb, и когда я использую этот код на C#, он создает файл размером 11,853kb, можете ли вы рассказать мне, почему pleasee –

+0

Ужасно, я понятия не имею. Вы должны спросить как новый вопрос, так как это может быть проблема SQL, и будет легче найти и ответить тогда :) –

1

Для операторов SQL проще всего использовать Verbatim string literal для всего запроса, а не для конкатенации фрагментов. Например.

CreateTableCommand.CommandText = @" 
BACKUP DATABASE Test 
TO DISK = 'C:\backup\t1.bak' 
WITH 
NOFORMAT, 
COMPRESSION, 
NOINIT, 
NAME = N't1-Full Database Backup', 
SKIP, 
STATS = 10; 
"; 
Смежные вопросы