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

  • Attempts at least

    Attempts at

    1 Ocak 2007
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • SPBedition

    SPBedition

    24 HAZİRAN 2013