前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用powershell 生成sqlserver 对象脚本

利用powershell 生成sqlserver 对象脚本

作者头像
用户1217611
发布2022-05-06 16:34:47
8700
发布2022-05-06 16:34:47
举报
文章被收录于专栏:文渊之博文渊之博
介绍

本篇将介绍如何使用powershell 生成脚本。

解决

利用 Script() 方法

首先,创建一个server 对象实例,然后连接它。我只需要引入Script() 方法,脚本如下:

如上,这个脚本将生成sql 脚本,当然这也意味着我们会把所有脚本生成出来,然后调用脚本把结果输出到外部文件内 。

文件内容如下:

生成表的脚本

我们能遍历这个表在数据库中,然后再次调用如下:

注意:

  1. 引入已经包含了回车符号‘r’,以便能够正确地显示结果.Script() 返回每一个办好的对象生成脚本。
  2. 添加GO语句,将每个CREATE TABLE语句视为一个批处理。因为Script()方法将生成CREATE TABLE语句,所以即使没有GO语句,也不会有太大的问题。但是,如果它将为其他数据库对象(如视图和存储过程)生成脚本,那么您肯定需要包含一个GO语句,以便将单个的CREATE语句作为批处理处理。
  3. 我使用Out-File cmdlet的-Append参数将Script()方法的输出附加到现有文件中。

生成索引脚本

既然我们已经为创建表生成了脚本,那么我们也可以为表中相应的索引生成脚本。我们只需要遍历Indexes集合,再次调用Script()方法,并将结果添加到输出文件中

生成的SQL脚本的一部分如下所示。注意,在使用SMO的Windows PowerShell中,只需几行代码就可以轻松地生成SQL脚本。

使用脚本对象生成器

生成SQL脚本的另一个选项是使用Scripter对象。Scripter对象是SQL Server中管理脚本操作的总体顶级对象。因为它是一个完整的对象,所以它比Script()方法有更多的功能。例如,它能够发现对象之间的关系,并为您提供更多类似于使用SQL Server Management Studio的脚本选项。

在下面Windows PowerShell脚本中,我们将使用Microsoft.SqlServer.Management.Smo.Scripter namespace这个新对象。

其中$s是我们之前定义的Server对象的一个实例。一旦定义了Scripter对象,就可以指定不同的Options属性。这些属性定义了Scripter对象如何生成SQL脚本。下面是我从SQL Server Management Studio中选取的一些选项作为示例。

下面是脚本涉及的属性的简要描述

  • AppendToFile - specifies whether to append the script to the output file or overwrite it. It's the equivalent of what we did with the Out-File cmdlet using the -append parameter
  • ClusteredIndexes - specifies whether to include the clustered index definitions
  • DriAll - specifies whether to include the DRI - declarative referential integrity - objects
  • ScriptDrops - specifies whether to include the IF EXISTS..DROP statements
  • IncludeHeaders - specifies whether to include header information llike the date and time the script was generated
  • ToFileOnly - specifies whether to simply generate the script to a file or store it in a string as an output as well
  • Indexes - specifies whether to include indexes
  • WithDependencies - specifies whether to include all other dependent objects in the script

这里的关键属性是WithDependencies属性,因为这个属性可以为所有其他对象(如视图和存储过程)生成脚本,这些对象都依赖于您想要用脚本输出的对象。不像简单地使用Script()方法时,需要显式地调用所有其他对象集合来生成相应的脚本,这个属性告诉Scripter对象只需查看关系和对象依赖关系,作为生成脚本的基础。

最后,我们需要调用Scripter对象的Script()方法,传递我们想要为其生成脚本的数据库对象集合

使用Scripter对象的完整代码清单如下所示。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 利用 Script() 方法
  • 生成表的脚本
  • 生成索引脚本
  • 使用脚本对象生成器
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档