2008-10-15 4 views

답변

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 

예에서 다음과 같이 VB.NET에서 할

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

OSQL 경로에 있어야합니다, 전체 파일 이름을 알고 있어야합니다, 로그인을 올바르게 설정해야합니다 (-E 또는 -U 옵션)

0

저장 프로 시저를 제외 할 이유가 없습니다. 당신은 포함 할 필요가 없습니다 "다른 SQL없는 코드의 종류", 플러스 다른 솔루션에

EXEC의 someothersp

해야합니다

(또는 동급).

제외 이유는 무엇입니까? 나는 그것이 또 다른 언어로 코드를 작성하는 것보다 낫다고 생각할 것이다.

+1

나는 그가 다른 SQL 스크립트 내에서 하나의 SQL 스크립트를 호출하기를 원한다고 생각한다. Chris Ballance가 제안한대로 외부 스크립트 및 언어에서 SQL 스크립트를 호출하지 않습니다. devio의 솔루션은 실행 가능합니다. 전체 경로가 필요한 경우 고통이 될 수도 있습니다. – tjmoore

관련 문제