【问题标题】:Invoke-SqlCmd vs .Net Framework based Sql Server CommandInvoke-SqlCmd vs .Net Framework 基于 Sql Server 命令
【发布时间】:2014-04-02 23:50:55
【问题描述】:

刚刚开始使用 PowerShell 与 SQL Server 交互,并得到了以下查询:

对于执行任何 sql server 数据库操作,使用基于 .net 框架的对象是我的首选,主要是因为我来自 C# 背景。例如:

$sqlCommand = New-Object System.Data.SqlClient.SqlCommand

但是,我发现我们也可以使用 SqlServerCmdletSnapin100 中提供的 Invoke-SqlCmd cmdlet。如:

Add-PSSnapin SqlServerCmdletSnapin100
Set-Location SQLSERVER:\sql\DatabaseInstance\databases\TestDatabase
Invoke-SqlCmd -Query "SELECT * FROM [File]" -User "UserName" -Password "UserPassword" 

想知道,为什么要使用 Invoke-SqlCmd 而不是基于 .net 框架的对象?

是否通过 PowerShell 提供了 Invoke-SqlCmd,因为那里的某些人不熟悉 .net 框架。
或者
Invoke-SqlCmd 提供了哪些我们必须使用的特定功能。

请指导。

【问题讨论】:

    标签: powershell-2.0


    【解决方案1】:

    Invoke-SqlCmd 是通过管理单元通过 powershell 提供的,而不是默认情况下。它所做的只是调用 sqlcmd.exe,它在 powershell 之前就已经存在,用于通过 cmd 发送 sql 命令。现在我们可以直接访问.Net,我们不需要它。 Invoke-sqlcmd 没有什么是你不能用 .Net 做的,SqlClient 永远是 IMO 更好的选择,因为它更快,而且你永远不会得到微软所说的这种“不同行为”。

    http://technet.microsoft.com/en-us/library/ms162773.aspx

    SQL Server Management Studio 使用 Microsoft .NET Framework SqlClient 用于在查询编辑器中以常规和 SQLCMD 模式执行。 从命令行运行 sqlcmd 时,sqlcmd 使用 ODBC 驱动程序。 由于可能适用不同的默认选项,因此您可能会看到不同的 在 SQL Server 管理中执行相同查询时的行为 Studio 处于 SQLCMD 模式和 sqlcmd 实用程序中。

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 2017-09-30
      • 2013-06-09
      • 2021-09-25
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2017-12-21
      相关资源
      最近更新 更多