1つの方法では、どの.NETアプリケーションと同様にADO.NETオブジェクトを使用しています。以下のPowerShellの例では、SQLツールをインストールする必要はありません。
$connectionString = "Data Source=YourServer;Initial Catalog=YourDatabase;Integrated Security=SSPI";
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString);
$command = New-Object System.Data.SqlClient.SqlCommand("DELETE FROM dbo.YourTable WHERE YourTableID = 1", $connection);
$connection.Open();
$rowsDeleted = $command.ExecuteNonQuery();
Write-Host "$rowsDeleted rows deleted";
$connection.Close();
接続文字列でUser ID=YourSqlLogin;Password=YourSqlLoginPassword
を指定し、SQL認証を使用してクエリを実行するには:、Windows認証を使用してクエリを実行し、接続文字列でIntegrated Security=SSPI
を指定するに
。
$connectionString = "Data Source=YourServer;Initial Catalog=YourDatabase;User ID=YourSqlLogin;Password=YourSqlLoginPassword";
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString);
$command = New-Object System.Data.SqlClient.SqlCommand("DELETE FROM dbo.YourTable WHERE YourTableID = 1", $connection);
$connection.Open();
$rowsDeleted = $command.ExecuteNonQuery();
Write-Host "$rowsDeleted rows deleted";
$connection.Close();
いずれの場合も、テーブルのアクセス権はDELETE
である必要があります。
質問に追加したスクリプトのNET USE
コマンドの目的は、ワークグループ環境でサーバーに認証されている場合を除いてわかりません。個人的には、私はSQL認証を使用し、NET USE
の醜さを取り除きます。
EDIT:同じバッチ内の複数SELECT
文の場合
、それぞれが別々のレコードセットを返します。
また
$reader = $command.ExecuteReader();
do {
While($reader.Read()) {
#process row here;
}
} while($reader.NextResult());
、あなたは「データセット」を埋めるためにDataAdapter
を使用することができます。これは、これ以上のレコードが利用できないときは、falseを返しますDataReader
を、使用している場合NextRecordset
を呼び出す必要があります。 DataSet
は、各結果セットに別々のDataTable
が含まれています:
$da = New-Object System.Data.SqlClient.SqlDataAdapter($command);
$ds = New-Object System.Data.DataSet;
$null = $da.Fill($ds);
foreach($dt in $ds.Tables) {
$dt | Out-GridView;
}
ます。また、カラムとデータ型の数が同一である場合UNION ALL
を使用して、単一の結果セットに結果を連結するために、SQLクエリを微調整することができます。
$sqlQuery = @("
SELECT *
FROM DB926.dbo.Version_Solution
WHERE Notes ='9.2.7'
UNION ALL
SELECT *
FROM DB_926.dbo.Version_Solution
WHERE Notes ='9.2.7'";
);
$command = New-Object System.Data.SqlClient.SqlCommand($sqlQuery, $connection);
SO doesntの仕事、あなたのコードは何でここでの例の抜粋ですか?何を試しましたか? – Esperento57
Hey hi esperento、実際に私はその時に私とコードを持っていなかったので、私はそれをアップロードできませんでしたが、私は質問を編集し、コードをアップロードしましたが、私はGoogleで検索してみましたが、それで私を助けてください。 – SRP