2008-10-15 58 views
12

Quiero llamar a una serie de scripts .sql para crear la estructura de base de datos inicial¿Cómo llamar a un script SQL desde otro script SQL?

  1. script1.sql
  2. script2.sql etc.

¿hay alguna manera de hacer esto sin sqlcmd o procedimientos almacenados o cualquier otro tipo de código que no sea sql? dentro de un archivo .sql.

Respuesta

3

Sure. Simplemente cree una pequeña aplicación que obtenga todos los archivos .sql que desee y los ejecute. Hacerlo en VB.NET de la siguiente manera:

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 

Ejemplo de: http://snipplr.com/view/3879/run-sql-script-from-external-file/

11

podría intentar esto:

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

osql debe estar en la ruta, el nombre completo debe ser conocido, y los inicios de sesión deben configurarse correctamente (opciones -E o -U)

0

No hay ninguna razón para excluir los procedimientos almacenados. No es necesario incluir "cualquier otro tipo de código que no es de SQL", además de

someothersp EXEC

que se requiere (o su equivalente) en cualquier otra solución.

¿Cuál es su razón para excluirlos? Creo que es mejor que escribir código en otro idioma.

+1

Creo que quiere decir que quiere llamar a un script SQL desde otro script SQL. No invoque scripts SQL de scripts e idiomas externos como propone Chris Ballance. La solución de devio es factible, si es que duele si necesita caminos completos. – tjmoore

Cuestiones relacionadas