我对 PowerShell 管理单元和其他与 SQL Server 交互的“工具”有点困惑。那么这些工具之间有什么区别:
- SMO
- SQLPS 模块
- SQLPSX
- SQL Server PowerShell 提供程序
我对 PowerShell 管理单元和其他与 SQL Server 交互的“工具”有点困惑。那么这些工具之间有什么区别:
SMO或SQL Server 管理对象是一组 .NET 类,开发人员用来创建管理 SQL Server 的应用程序。在 SQL Server 2005 中引入的 SMO 类已在每个 SQL Server 版本上进行了更新,以涵盖新的管理功能。SMO 是用于构建 SQL Server Management Studio 以及列表中其他工具的基础 API。
SQLPS 模块是 SQL Server 2012 中引入的Powershell 模块。在 2012 版本之前,SQL Server 中的 Powershell 支持由一个小型 shell 提供,即 SQL 2008 中引入的 sqlps.exe,并在 SQL Server 2008 R2 中进行了一些小的增强。可以在此处找到有关 SQL mini-shell 的完整讨论http://sev17.com/2010/05/the-truth-about-sqlps-and-powershell-v2/。minishell sqlps.exe 仍然存在于 SQL Server 2012 中,还有一个名为 sqlps 的模块。SQL 2012 Powershell 实现的讨论可以在这里找到:http ://sev17.com/2011/07/denali-sqlps-first-impressions/ 注意:也可以围绕 sqlps cmdlet 和提供程序构建一个小型包装器,以便为 SQL 2012(2008 和 2008 R2)之前的版本创建您自己的模块。我在这里创建了一个包装器
SQLPSX是我在 2007 年 9 月开始工作的 CodePlex 项目,当时 SQL Server 还没有任何 Powershell 支持。第一个版本于 2008 年 7 月发布。SQLPSX 项目主要是基于脚本的模块,这意味着您可以阅读脚本源代码。SQLPSX 项目仍然涵盖 SQLPS 模块实现中未涵盖的许多任务。我们试图不在 sqlps 和 sqlpsx 模块之间重叠功能,尽管在 2012 版本中,SSIS 和备份/恢复功能有一些重叠。SQLPSX 项目的详细描述可以在这里找到http://sqlpsx.codeplex.com/
SQL Server Powershell 提供者——首先让我们定义提供者。提供程序允许用户与文件系统等数据进行交互,您可以在其中 cd、dir、复制、删除等。注意:提供程序不会实现所有功能,例如 SQL 提供程序,除了少数例外不包括复制、新建、消除。
Powershell 附带了几个提供程序,包括文件系统提供程序和注册表提供程序。您可以通过运行 get-psprovider 查看系统上安装的提供程序。SQL Server 2008 及更高版本(尽管提供程序向后兼容)包括 SQL Server 提供程序。该提供程序实现了一个 SQL Server“驱动器”,您可以在其中导航 SQL Server 实例并 cd 进入数据库、表等。该功能与您在 SQL Server Management Studio 中看到的非常相似。人们的一个常见问题是您可以在哪里浏览 SQL Server 表中的数据,答案是否定的。SQL Server Provider 用于管理 SMO 对象。您可以使用 cmdlet invoke-sqlcmd 来运行查询,就像在旧的命令行版本 sqlcmd 中一样。