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

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • Engadget

    Engadget

    18 EYLÜL 2006
  • Attempts at least

    Attempts at

    1 Ocak 2007