2008-10-15 43 views

cevap

11

:

Sub ExecuteSqlScript(FilePath As String) 

    Dim Script As String 
    Dim FileNumber As Integer 
    Dim Delimiter As String 
    Dim aSubscript() As String 
    Dim Subscript As String 
    Dim i As Long 

    Delimiter = ";" 
    FileNumber = FreeFile 
    Script = String(FileLen(FilePath), vbNullChar) 

    ' Grab the scripts inside the file 
    Open FilePath For Binary As #FileNumber 
    Get #FileNumber, , Script 
    Close #FileNumber 

    ' Put the scripts into an array 
    aSubscript = Split(Script, Delimiter) 

    ' Run each script in the array 
    For i = 0 To UBound(aSubscript) - 1 
     aSubscript(i) = Trim(aSubscript(i)) 
     Subscript = aSubscript(i) 
     CurrentProject.Connection.Execute Subscript 

    Next i 

End Sub 

Örnek dan şu şekildedir: VB.NET bunu Do

exec master..xp_cmdshell 'osql -E -ix:\path\filename.sql' 

Osql yolunda olmalı, tam dosya bilinmelidir, ve girişler doğru şekilde ayarlanmalıdır (seçenekler -E veya -U)

0

Kayıtlı yordamları hariç tutmanın bir nedeni yoktur. Sen dahil etmek gerekmez "başka sql değildir kod türü" artı başka çözümde

EXEC someothersp

gerekecektir

(ya da eşdeğeri).

Bunları çıkarmak için nedeniniz nedir? Yine başka bir dilde yazı kodu atmayı düşünüyorum.

+1

Başka bir SQL komut dosyasından bir SQL betiğini çağırmak istediğini düşünüyorum. Chris Ballance'nin önerdiği gibi harici komut dosyalarından ve dillerden SQL komut dosyalarını çağırmayın. devio'nun çözümü işe yarayabilir, eğer tam yollara ihtiyaç varsa bir ağrı olabilir. – tjmoore

İlgili konular