Получение данных с помощью инструкции select SQL в Powershell
Моя цель-присвоить значение возвращаемых результатов переменной:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=HOMESQLEXPRESS;Database=master;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "select name from sysdatabases where name = 'tempdb'"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSet.Tables[0]
Возвращаемое значение, очевидно, должно быть 'tempdb', поэтому как я могу назначить это переменной, чтобы это работало:
Write-output "Database is " $variablename
Желаемый вывод: база данных-tempdb
2 ответов:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server=HOME\SQLEXPRESS;Database=master;Integrated Security=True" $SqlConnection.Open() $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "select name from sysdatabases where name = 'tempdb'" $SqlCmd.Connection = $SqlConnection $dbname = $SqlCmd.ExecuteScalar() $SqlConnection.Close() Write-output "Database is " $dbname
При использовании SQL Server 2008 следует рассмотреть возможность использования командлетов, доступных для PowerShell, таких как
Invoke-SqlCmd, которые можно использовать для выполнения запросов к базе данных SQL Server. Я использовал их в проекте для автоматизации процесса применения патчей к базе данных и записи того, какие патчи были применены:Сначала вам нужно будет использовать эти две команды, чтобы сделать командлеты SQL Server доступными для вашего сеанса.
add-pssnapin sqlserverprovidersnapin100 add-pssnapin sqlservercmdletsnapin100Как только они доступны, вы можете вызвать SQL командует следующим образом.
$x = invoke-sqlcmd -query "select name from sysdatabases where name = 'tempdb'"Переменная
$xбудет содержать результаты выполнения запроса.Проверить http://msdn.microsoft.com/en-us/library/cc281720.aspx подробнее об использовании командлетов SQL Server
Comments