bar*_*ker 0 sql-server powershell foreach sqldatareader
假设我有一个包含 3 列的表——“Column1”、“Column2”和“Column3”——所有 3 列的数据类型都是 varchar(100)。
使用 PowerShell,如何连接到 SQL Server 并使用 SqlDataReader 和 ForEach 运算符查看“Column2”的内容?
我的做法大致如下:
$SqlServer = 'sql.example.com';
$SqlDatabase = 'MyDB';
$SqlConnectionString = 'Data Source={0};Initial Catalog={1};Integrated Security=SSPI' -f $SqlServer, $SqlDatabase;
$SqlQuery = "SELECT Name FROM dbo.Person ORDER BY Name;";
$SqlConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList $SqlConnectionString;
$SqlCommand = $SqlConnection.CreateCommand();
$SqlCommand.CommandText = $SqlQuery;
$SqlConnection.Open();
$SqlDataReader = $SqlCommand.ExecuteReader();
#Fetch data and write out to files
while ($SqlDataReader.Read()) {
Write-Output $SqlDataReader['Name'];
}
$SqlConnection.Close();
$SqlConnection.Dispose();
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,我基本上重构了 MSDN 示例中的代码。
对于那些想知道我为什么使用 SqlDataReader 的人:我的大多数脚本都使用 SqlDataAdapter,但是这个脚本从数据库中检索了大约 8,000 个 PDF,所以我对调用SqlDataAdapter.Fill(). 作为交换,在表上持有共享锁的时间要长得多SqlDataAdapter.Fill(),SqlDataReader.Read()通过一次获取一条记录,将内存使用量降低到客户端可管理的水平。
| 归档时间: |
|
| 查看次数: |
6594 次 |
| 最近记录: |