SORU
2 EYLÜL 2008, Salı


Büyük bir SQL komut dosyası (GİT komutları ile)yürütmek

C içinden SQL ifadeleri (tablolar, görünümler ve saklı yordamları bir grup oluşturma) büyük bir set çalıştırmak için ihtiyacım var# programı.

Bu ifadeler GO ifadeleri ile ayrılmış olması gerekir, ama SqlCommand.ExecuteNonQuery() GO tablolar gibi değil. Başvuru için göndeririz sanırım benim çözüm GO satır SQL dize bölmek, ve her parti ayrı ayrı yürütülecek.

Daha kolay/daha iyi bir yolu var mı?

CEVAP
2 EYLÜL 2008, Salı


GİT ayırıcılar anlayabileceği SQL Server Yönetim Nesneleri (SMO) kullanın. Benim blog yazısı buraya bakın: http://weblogs.asp.net/jgalloway/archive/2006/11/07/Handling-_2200_GO_2200_-Separators-in-SQL-Scripts-2D00-the-easy-way.aspx

Örnek kod:

public static void Main()    
{        
  string scriptDirectory = "c:\\temp\\sqltest\\";
  string sqlConnectionString = "Integrated Security=SSPI;"  
  "Persist Security Info=True;Initial Catalog=Northwind;Data Source=(local)";
  DirectoryInfo di = new DirectoryInfo(scriptDirectory);
  FileInfo[] rgFiles = di.GetFiles("*.sql");
  foreach (FileInfo fi in rgFiles)
  {
        FileInfo fileInfo = new FileInfo(fi.FullName);
        string script = fileInfo.OpenText().ReadToEnd();
        SqlConnection connection = new SqlConnection(sqlConnectionString);
        Server server = new Server(new ServerConnection(connection));
        server.ConnectionContext.ExecuteNonQuery(script);
   }
}

Eğer bu sizin için çalışmıyor eğer, kolları olan Phil Haack kütüphane bakın: http://haacked.com/archive/2007/11/04/a-library-for-executing-sql-scripts-with-go-separators-and.aspx

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cdgotx

    cdgotx

    8 Kasım 2011
  • Christopher Bill

    Christopher

    30 NİSAN 2009
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009