我对PowerShell snap和其他与SQL Server交互的“工具”感到困惑。那么这些工具之间有什么区别:
答案 0 :(得分:28)
SMO 或SQL Server Management Objects是开发人员用来创建管理SQL Server的应用程序的一组.NET类。在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中的增强功能。可以在http://sev17.com/2010/05/the-truth-about-sqlps-and-powershell-v2/找到有关SQL mini-shell的完整讨论。 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 是一个CodePlex项目,我在2007年9月开始研究之前,SQL Server有任何Powershell支持。第一个版本于2008年7月发布.SQLPSX项目主要是基于脚本的模块,这意味着您可以阅读脚本源代码。 SQLPSX项目仍然涵盖SQLPS模块实现中未涉及的许多任务。我们尽量不在sqlps和sqlpsx模块之间重叠功能,尽管在2012版本中SSIS和备份/恢复功能存在一些重叠。有关SQLPSX项目的详细说明,请访问http://sqlpsx.codeplex.com/
SQL Server Powershell提供程序 - 首先让我们定义提供程序。提供程序允许用户与cd,dir,copy,remove等文件系统之类的数据进行交互。注意:提供程序不会实现SQL Provider等所有功能,除少数例外情况不包括副本,新的,删除。
Powershell附带了多个提供程序,包括文件系统提供程序和注册表提供程序。您可以通过运行get-psprovider来查看系统上安装的提供程序。 SQL Server 2008及更高版本(虽然提供程序向后兼容)包括SQL Server提供程序。提供程序实现了SQL Server"驱动器"您可以在其中导航SQL Server实例并cd到数据库,表格等。该功能与您在SQL Server Management Studio中看到的功能非常相似。人们常见的一个问题是,您可以在SQL Server表中浏览数据,答案是否定的。 SQL Server提供程序用于管理SMO对象。您可以使用cmdlet invoke-sqlcmd来运行查询,就像在旧的命令行版本sqlcmd中一样.SQL提供程序包含在sqlps minishell以及sqlps模块中。