2016-03-26 29 views
1

bir sorguyu yürütmeye çalışırken Yerel Sunucumdaki tüm veritabanlarından sahip olduğum tüm yedekleri almaya çalışıyorum. Bu SQL kodunu bulundu:Geçersiz sütun adı 'ana', C#

select a.backup_set_id, a.server_name, a.database_name, a.name, a.user_name, a.position, a.software_major_version, a.backup_start_date, backup_finish_date, a.backup_size, a.recovery_model, b.physical_device_name 
from msdb.dbo.backupset a join msdb.dbo.backupmediafamily b on a.media_set_id = b.media_set_id 
where a.database_name = 'AdventureWorksLT2008' order by a.backup_finish_date desc 

SQL Server yılında sahip olduğum her yedekleri döndürür, ancak ben Visual Studio Uygulamamda kullanmaya çalıştığınızda bana bu hata veriyor:

bir işlenmeyen 'System.Data.SqlClient.SqlException' türü istisnası System.Data.dll dosyasında oluştu

Ek bilgi: Geçersiz sütun adı 'ana'. (Veritabanlarından birinde uzman).

private void listBackUps() 
     { 
      foreach (string str in listaDB) 
      { 
       string query1 = "select a.backup_set_id, a.server_name, a.database_name, a.name, a.user_name, a.position, a.software_major_version, a.backup_start_date, backup_finish_date, a.backup_size, a.recovery_model, b.physical_device_name "; 
       string query2 = query1 + "from msdb.dbo.backupset a join msdb.dbo.backupmediafamily b on a.media_set_id = b.media_set_id "; 
       string query3 = query2 + "where a.database_name = " + str + " order by a.backup_finish_date desc"; 
       SqlCommand cmd = new SqlCommand(query3, connection); 
       cmd.ExecuteNonQuery(); 
       cbBackUps.Items.Add(new ComboBoxItem { Content = str + " BackUp" }); 

      } 

     } 

cbBackUps Ben saklanan tüm yedekleri istediğiniz bir ComboBox geçerli:

Bu

benim kodudur.

Teşekkür ederiz!

+0

Aşağıdaki gibi köşeli parantez içine para biriktirmeyi deneyin: [master] –

+4

'a.database_name = '" + str + "' by. .' – Squirrel

+0

Sincap cevabını denedim ve işe yaradı, şimdi biraz aptal hissediyorum. Teşekkür ederim!! – ruthoverboard

cevap

1

Dikkat edilmesi gereken çok şey var.

Sorgular Kindly review

ile

where a.database_name = " + str + " order by

değiştirin o zaman Oluşturma için dize Builder kullanmalıdır satır içi sorgu kullanıyorsanız Kindly review

İkinci C# parametreli sorgu kullanmayı deneyin

where a.database_name = '" + str + "' order by

SQL, "+ str +" kodunuzu sütun adı olarak ele aldığından.