/ / Invoke-SqlCmd vs commande de serveur SQL basée sur .Net Framework - powershell-v2.0

Invoke-SqlCmd vs. Sql Server basé sur .Net Framework - powershell-v2.0

Je viens juste de commencer à me familiariser avec l’interaction avec SQL Server à l’aide de PowerShell.

Pour effectuer n'importe quelle opération de base de données de serveur SQL Server, mon choix préféré consiste à utiliser des objets basés sur une structure .net, principalement à cause de ma raison d'être en arrière-plan C #. Par exemple:

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

Cependant, j'ai constaté que nous pouvons également utiliser l'applet de commande Invoke-SqlCmd disponible dans SqlServerCmdletSnapin100. Comme:

Add-PSSnapin SqlServerCmdletSnapin100
Set-Location SQLSERVER:sqlDatabaseInstancedatabasesTestDatabase
Invoke-SqlCmd -Query "SELECT * FROM [File]" -User "UserName" -Password "UserPassword"

Vous vous demandez pourquoi on ne devrait jamais utiliser Invoke-SqlCmd plutôt que des objets basés sur une structure .net?

Invoke-SqlCmd a-t-il été mis à disposition via PowerShell car certaines populations ne sont pas familiarisées avec le cadre .net?
Ou
Existe-t-il des fonctionnalités particulières offertes par Invoke-SqlCmd pour lesquelles nous devons l'utiliser?

S'il vous plaît guider.

Réponses:

2 pour la réponse № 1

Invoke-SqlCmd a été mis à disposition viaPowershell par snapins, pas par défaut. Il n’appelle que sqlcmd.exe, qui existait avant PowerShell et qui était utilisé pour envoyer des commandes SQL via cmd. Maintenant que nous avons un accès direct à .Net, nous n'en avons plus besoin. Il n'y a rien que Invoke-sqlcmd puisse faire. Vous ne pouvez pas le faire avec .Net, SqlClient sera toujours le meilleur choix. IMO, car il est plus rapide et vous "Je n'aurai jamais ce" comportement différent "auquel Microsoft fait référence.

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

SQL Server Management Studio utilise Microsoft.NET Framework SqlClient pour une exécution en mode normal et en mode SQLCMD dans l'éditeur de requête. Lorsque sqlcmd est exécuté à partir de la ligne de commande, il utilise le pilote ODBC. Comme différentes options par défaut peuvent s’appliquer, il est possible que vous voyiez différentes comportement lorsque vous exécutez la même requête dans SQL Server Management Studio en mode SQLCMD et dans l'utilitaire sqlcmd.