我想调用一系列.sql脚本来创建初始数据库结构
有没有办法在没有sqlcmd或存储过程或任何其他类型的非sql代码的情况下执行此操作? 就在一个.sql文件里面。
答案 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
在任何其他解决方案中都是必需的(或等效的)。
排除它们的原因是什么?我肯定会认为用另一种语言编写代码会很糟糕。