是否根据MS SQL表数据执行Powershell读取和执行命令?

时间:2016-03-09 16:44:43

标签: sql-server database powershell

我是Powershell和Powershell ISE的新手。我对面向对象编程语言和一些SQL有很好的经验。基于我在网上找到的代码示例,我设法将powershell连接到数据库并运行/显示查询。

我被困在这里,我需要Powershell逐个遍历SQL服务器上的所有数据库,检查特定的表列是否为" Processed"州。现在,当它看到这个处理状态出现时,我希望power shell显示数据库名称,并且已经处理了。我希望它为所有数据库执行此操作,然后在每个数据库都有一个"处理过的"在该特定细胞中的状态。

我假设我需要某种数组和if else语句等等。如果它可以使用所有数据库名称填充数组。然后一个接一个地删除它们,因为它们符合"已处理"需求。程序继续循环,直到所有数据库都满足此要求。

以下是我目前的代码。

感谢任何帮助!

    $DBServer = "SERVER.NAME"
    $databasename = "master"
    $uid = "USERNAME"
    $pwd = "PASSWORD"
    $Connection = new-object system.data.sqlclient.sqlconnection #Set new object to connect to sql database
    $Connection.ConnectionString ="server=$DBServer;database=$databasename; User ID = $uid; Password = $pwd;" 
    clear #clears console 
    Write-host "Connection Information:"  -foregroundcolor yellow -backgroundcolor black
    $Connection #Displays connection information


    ### Connect to Database and Run Query

    $SqlQuery = @"

    SELECT name
    FROM master.dbo.sysdatabases

    "@

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand #setting object to use sql commands
    $Connection.open()
    Write-host "Connection to database successful." -foregroundcolor green -backgroundcolor black
    $SqlCmd.CommandText = $SqlQuery
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd
    $SqlCmd.Connection = $Connection
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    $Connection.Close()
    $DataSet.Tables[0]
    $Connection.Close()

0 个答案:

没有答案