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

  • Hudson Music

    Hudson Music

    13 Mart 2007
  • incognitotraveler

    incognitotra

    27 Mayıs 2010
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013