如何从另一个SQL脚本中调用SQL脚本?

时间:2008-10-15 20:47:36

标签: sql-server sql-server-2005

我想调用一系列.sql脚本来创建初始数据库结构

  1. script1.sql
  2. script2.sql 等
  3. 有没有办法在没有sqlcmd或存储过程或任何其他类型的非sql代码的情况下执行此操作? 就在一个.sql文件里面。

3 个答案:

答案 0 :(得分:11)

你可以试试这个:

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

osql必须在路径中,必须知道完整的文件名,并且必须正确设置登录(选项-E或-U)

答案 1 :(得分:3)

不确定。只需创建一个小应用程序,它可以提取所需的所有.sql文件并执行它们。在VB.NET中执行如下操作:

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

示例来自:http://snipplr.com/view/3879/run-sql-script-from-external-file/

答案 2 :(得分:0)

没有理由排除存储过程。您不需要包含“不是sql的任何其他类型的代码”,加上

EXEC someothersp

在任何其他解决方案中都是必需的(或等效的)。

排除它们的原因是什么?我肯定会认为用另一种语言编写代码会很糟糕。