Получение данных с помощью инструкции 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

690   2  

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

    Ничего не найдено.