通过混合使用多个 PoSH 脚本,我设法获得了一个工作脚本,该脚本生成、复制和远程执行脚本,为给定数据库及其所有对象、登录名等创建基本结构。但是用于SIZE和FILEGROWTH生产环境中规定的值(比如 1GB 和 512MB)。目标是在开发环境中创建数据库供开发人员使用。因此,初始默认大小和文件增长将绰绰有余。对于 SQL2016,这些值分别为 8MB 和 64MB,如MSSQL Tiger Team此处所述。
有没有办法用这些值而不是为数据库配置的值生成脚本?还是我应该搜索并替换脚本中的值?
修改 SQL 脚本的一种方法是使用
Microsoft.SqlServer.TransactSql.ScriptDom
. 下面是一个 PowerShell 脚本示例,它使用在 C# 中实现的TSqlFragmentVisitor更改文件大小,您可以根据需要对其进行扩展。同样的技术可用于更改数据库名称、文件路径、大小等。请注意,如果您使用 PowerShell ISE 进行脚本开发,则需要在更改 C# 代码后关闭并重新打开 PowerShell ISE,以便重新加载 .NET 应用程序域。
示例输出:
如果您的生产环境启用了自动增长,那么当前大小可能会随着时间的推移而变化,这可能会导致搜索/替换问题,因为您不知道要搜索什么。您可以尝试创建一个具有所需属性的虚拟数据库,并在脚本生成期间通过元数据连接选择这些属性。或者,您可以在脚本生成期间简单地对值进行硬编码。