2013-03-11 48 views
0

我寫了下面的PowerShell代碼從表中的數據導出爲INSERT語句:SQL SMO腳本INSERT與排構造

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null 

$srv = new-object Microsoft.SqlServer.Management.SMO.Server 
$db = $srv.Databases["MYTESTDB"] 

$scripter = new-object Microsoft.SqlServer.Management.SMO.Scripter $srv 
$scripter.Options.FileName = "C:\tmp\data.sql" 
$scripter.Options.ToFileOnly = $TRUE 
$scripter.Options.ScriptSchema = $FALSE 
$scripter.Options.ScriptData = $TRUE 
$scripter.EnumScript($db.tables['MYTABLE']) 

這將在下面的表格導出:

INSERT [dbo].[MYTABLE] ([MYCOLUMN1], [MYCOLUMN2], [MYCOLUMN3]) VALUES ('something1', 'something1', 'something1') 
INSERT [dbo].[MYTABLE] ([MYCOLUMN1], [MYCOLUMN2], [MYCOLUMN3]) VALUES ('something2', 'something2', 'something2') 
INSERT [dbo].[MYTABLE] ([MYCOLUMN1], [MYCOLUMN2], [MYCOLUMN3]) VALUES ('something3', 'something3', 'something3') 

但我在尋找的是以下形式,我相信它被稱爲「行構造函數」:

INSERT [dbo].[MYTABLE] ([MYCOLUMN1], [MYCOLUMN2], [MYCOLUMN3]) VALUES 
('something1', 'something1', 'something1'), 
('something2', 'something2', 'something2'), 
('something3', 'something3', 'something3') 

是否有可能讓SMO生成這種形式?

+0

此語法絕對支持從2008年開始http://msdn.microsoft.com/en-us/library/ms174335(v=sql.100).aspx – 2013-03-11 16:58:28

+0

@Eli Ekstein:我知道這是,但問題是如何讓SMO使用此語法生成腳本的。謝謝! – Allanrbo 2013-03-11 16:59:38

+0

對不起,... 現在我看到我不明白你的問題... ... – 2013-03-11 17:01:39

回答

0

我不這麼認爲。 SMO支持SQL版本返回到語法支持之前。除了製作較小的DML腳本之外,通過向SMO添加該功能,它們幾乎沒有什麼收穫,並且它在代碼庫中的可維護性成本很高。