|
|
1
1
我们通过编写一个可以使用sqlcmd参数的脚本解决了类似的问题。类似:
这可以通过命令行或SSMS运行。最后,我们制作了一个工具,可以读取文件并用相同的语法替换变量。 我不认为它能解决你列出的每一个问题,但它应该对一些问题有所帮助。 |
|
|
2
1
我可能会将此脚本用作命令行工具中的嵌入式模板;从命令行参数中获取所需的最小信息(替换占位符-dbname和logfilesize;其他类似文件组名称的内容可以从dbname中推导,例如fg_dbname_u primary(对于主文件组))。使用文本搜索/替换来填充空白,然后针对要将其部署到的SQL服务器执行此操作。 例如:
或: 使用SMO(SQL Server管理对象)创建数据库。您基本上需要相同的信息(数据库名称、日志文件大小),并且可以通过编程方式创建数据库及其布局—不需要T-SQL脚本。 附带说明:如果要创建单独的文件组,我建议至少使用以下布局:
这样,就可以最大限度地减小主文件组的大小,从而最大限度地降低主文件组遇到磁盘错误和损坏的风险。主文件组包含系统目录,因此如果该fg被破坏,那么整个db就是toast。 |
|
|
3
1
你考虑过使用吗 SQLCMD scripts 以及 SQLCMD utility 而不是编写自己的命令行界面,或者编写自己的命令行界面并简单地包装sqlcmd功能?当然,这将假定您只希望支持SQL 2005及更高版本。我在过去用过几种不同的方法来实现这一点(例如,使用带有包装sqlcmd的参数/选项的简单批处理文件,使用更广泛的方法来包装当时不幸是vb 6.0的代码,等等)。 如果您采用自己的代码进行包装,可能还需要考虑使用PowerShell(我目前也在考虑这一点)。SQL Server现在包括自定义PowerShell提供程序和对SMO功能、代码执行、管理等的扩展,这些功能可以自然地轻松地扩展到包装sqlcmd和SQL功能。 考虑到您正在尝试做的工作,sqlcmd(和sqlcmd脚本)的好处似乎与以下内容非常吻合:
如果你想交换关于你的项目的笔记/想法,我肯定会帮助你完成编码和/或只是讨论我遇到的一些挑战(例如,引擎的不同版本和功能的使用是我最初没有想到的一些事情)。 |