2009-02-20 51 views
2

是否有任何sql ninja知道如何從另一個腳本中執行腳本(.sql)?特別針對Sql Server 2005+平臺。例如。 psudeo代碼如下:如何在Sql Server 2005+中執行嵌套腳本

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 

回答

2

您可以從SSMS開啓SQLCMD模式或運行在SQLCMD.exe腳本。 SQLCMD支持腳本變量和腳本引用。

---script1----- 
create table .... 
:r path/to/another/script (which can reference others) 
--------------- 

希望這有助於

+0

這正是我一直在尋找。 – 2009-02-28 16:02:09

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/

應該是你需要得到持續,但請給我一條線,如果你需要進一步的幫助是什麼。

乾杯,約翰

0

核心MS SQL並沒有這樣做,但有些工具有一定的微距能力(即完成客戶端站點)。

SQLCMD支持「:r」導入另一個文件。

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