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

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011
  • Troy Hunt

    Troy Hunt

    29 EYLÜL 2011