我正在编写一个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'是必需的。
答案 0 :(得分:0)
由于某种原因,SMO没有在脚本中提供GO语句,我只是找到了一种方法来解决这个问题,方法是在生成每个脚本之后手动添加GO语句:
>$mydb.Tables["my_table"].Script($opcionesscript)| out-file c:\Tables.txt –append; “GO” | out-file c:\Tables.txt -append }