是否有任何sql忍者知道如何从另一个脚本中执行脚本(.sql)?专门针对Sql Server 2005+平台。例如。 psudeo代码如下:
ScriptA内容
RESTORE DATABASE [MyDbName]
FROM
DISK = N'path' WITH FILE = 1
.......
GO
Exec c:\scripts\ScriptB.sql
ScriptB内容
USE [MyDbName]
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTableName]') AND type in (N'U'))
CREATE TABLE [dbo].[MyTableName]
........
GO
答案 0 :(得分:3)
您可以从SSMS打开SQLCMD模式或在SQLCMD.exe中运行脚本。 SQLCMD支持脚本变量和脚本引用。
---script1-----
create table ....
:r path/to/another/script (which can reference others)
---------------
希望这会有所帮助
答案 1 :(得分:0)
以下文章提供了如何实现此目的的示例。
http://www.sqlservercentral.com/articles/Administering/scriptrunner/292/
这是一个免费工具,可以运行多个脚本,但不能在现有脚本中运行。
http://www.xsqlsoftware.com/Product/ProductDetails.aspx?ProdID=ScriptExecutor
以下是通过使用xp_cmdshell存储过程调用isql实用程序从另一个脚本中执行脚本的示例。
http://www.sqlservercentral.com/articles/Administering/scriptscheduling/450/
如果你需要进一步的帮助,应该是你需要开始的,但请给我留言。
干杯,约翰
答案 2 :(得分:0)
核心MS SQL不会这样做,但有些工具具有一些宏功能(即完成客户端站点)。
SQLCMD支持“:r”导入另一个文件。
答案 3 :(得分:0)
据我所知,您不必将两个脚本组合在一起。你可以只执行第一个,然后执行另一个。
您可以通过创建加载.sql文件的vbscript然后使用ADODB.Connection来执行这两个脚本来完成此操作。
这个vbscript应该这样做:
Set con = CreateObject("ADODB.Connection")
con.ConnectionString = "*** Database connection string here ***"
con.Open
Set fso = CreateObject("Scripting.FileSystemObject")
Set sqlFile = fso.OpenTextFile("scriptA.sql", 1)
con.Execute sqlFile.ReadAll
sqlFile.Close
Set sqlFile = fso.OpenTextFile("scriptB.sql", 1)
con.Execute sqlFile.ReadAll
sqlFile.Close
Set fso = Nothing
Set con = Nothing