SMO ScriptBatchTerminator属性不起作用?

时间:2016-03-05 19:00:23

标签: sql-server powershell smo

我正在编写一个powershell脚本来获取表的创建脚本并将其保存到.sql文件中。

使用脚本选项(SMO的一部分),我能够选择应包含哪些脚本部分,如外部索引,约束等。

$opcionesscript = New-Object Microsoft.SqlServer.Management.Smo.ScriptingOptions
$opcionesscript.DriAll = $true

然而,该物业' ScriptBatchTerminator'指的是“GO'设置为true时语句不起作用

$opcionesscript.ScriptBatchTerminator = $true

这同样是真或假的结果:

$mydb.Tables["CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS"].Script($opcionesscript)


SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS](
    [IDRELACION] [int] IDENTITY(1,1) NOT NULL,
    [IDLOCALIDAD] [int] NOT NULL,
    [COD_ART] [nvarchar](16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [FECHA] [datetime] NOT NULL,
 CONSTRAINT [PK_CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS] PRIMARY KEY CLUSTERED 
(
    [IDRELACION] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GRANT SELECT ON [dbo].[CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS] TO [someuser] AS [dbo]
ALTER TABLE [dbo].[CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS]  WITH CHECK ADD  CONSTRAINT [FK_CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS_CAT_LOCALIDADES_INVENTARIO] FOREIGN KEY([IDLOCALIDAD])
REFERENCES [dbo].[CAT_LOCALIDADES_INVENTARIO] ([IDLOCALIDAD])
ALTER TABLE [dbo].[CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS] CHECK CONSTRAINT [FK_CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS_CAT_LOCALIDADES_INVENTARIO]
ALTER TABLE [dbo].[CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS]  WITH CHECK ADD  CONSTRAINT [FK_CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS_CATARTI] FOREIGN KEY([COD_ART])
REFERENCES [dbo].[CATARTI] ([COD_ART])
ALTER TABLE [dbo].[CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS] CHECK CONSTRAINT [FK_CAT_LOCALIDADES_INVENTARIOS_RELACION_ARTICULOS_CATARTI]

为什么不包括' GO'声明?有没有错误或有什么东西我不见了? 我正在创建一个批处理.sql文件,以包含那些带有外键的create table,因此那些' GO'是必需的。

1 个答案:

答案 0 :(得分:0)

由于某种原因,SMO没有在脚本中提供GO语句,我只是找到了一种方法来解决这个问题,方法是在生成每个脚本之后手动添加GO语句:

>$mydb.Tables["my_table"].Script($opcionesscript)| out-file c:\Tables.txt –append; “GO” | out-file c:\Tables.txt -append }