Как вызвать сценарий SQL из другого сценария SQL? - PullRequest
13 голосов
/ 16 октября 2008

я хочу вызвать серию сценариев .sql для создания начальной структуры базы данных

  1. script1.sql
  2. script2.sql и т.д.

есть ли способ сделать это без sqlcmd или хранимых процедур или любого другого вида кода, который не является sql ? только внутри .sql файла.

Ответы [ 3 ]

11 голосов
/ 12 января 2009

Вы можете попробовать это:

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

osql должен быть в пути, полное имя файла должно быть известно, и логины должны быть установлены правильно (опции -E или -U)

3 голосов
/ 07 ноября 2008

Конечно. Просто создайте небольшое приложение, которое извлекает все нужные вам файлы .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/

0 голосов
/ 12 января 2009

Нет причин исключать хранимые процедуры. Вам не нужно включать «любой другой вид кода, который не является SQL», плюс

EXEC someothersp

, который потребуется (или его эквивалент) в любом другом решении.

Какова ваша причина для исключения их? Я уверен, что думаю, что это лучше, чем писать код на еще одном языке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...