Ответ 1
вы можете попробовать следующее:
exec master..xp_cmdshell 'osql -E -ix:\path\filename.sql'
osql должен находиться в пути, должно быть известно полное имя файла, и логины должны быть настроены правильно (опции -E или -U)
Я хочу вызвать серию сценариев .sql для создания исходной структуры базы данных
Есть ли способ сделать это без sqlcmd или хранимых процедур или любого другого кода, который не является sql? только внутри файла .sql.
вы можете попробовать следующее:
exec master..xp_cmdshell 'osql -E -ix:\path\filename.sql'
osql должен находиться в пути, должно быть известно полное имя файла, и логины должны быть настроены правильно (опции -E или -U)
Конечно. Просто создайте небольшое приложение, которое загружает все файлы .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/
Нет причин для исключения хранимых процедур. Вам не нужно включать "любой другой код, который не является sql", плюс
EXEC someothersp
который потребуется (или его эквивалент) в любом другом решении.
В чем причина их исключения? Я бы точно подумал, что это написание кода на другом языке.