首页 > 解决方案 > 如果文件夹中存在文件,则通过 Powershell 运行 SQL

问题描述

再会

我正在寻找仅当特定文件夹中存在文件时如何运行 sql 命令的方法?我读了很多员工,但我不能不适合我的剧本。我不想在 Powershell 中做我想做的 SSIS。然后我将把每小时运行一次的 MSQL Job Agent powershell 脚本放入。如果此 Job 找到 .csv 文件 /s 则将启动其他 Job。

谢谢你的意见。

$SourceFile = "C:\Import\FOLDER\report\Old\test\*.csv"
Action = "Invoke-Sqlcmd -ServerInstance "100.000.000.001" -Query "USE msdb ;   EXEC dbo.sp_start_job N'MSSQLJOBNAME' ;"

if(Test-Path -Path $SourceFile)
{
    "Invoke-Sqlcmd -ServerInstance "100.000.000.001" -Query "USE msdb ;   EXEC dbo.sp_start_job N'MSSQLJOBNAME' ;"

}

标签: sqlsql-serverpowershell

解决方案


指定文件夹和*.csv变量是不够的;你必须得到文件列表。

为了在数据库中运行 sql 命令,msdb我添加了参数-Database

$SourceFilesArray = Get-ChildItem -Path "C:\Import\FOLDER\report\Old\test\" -Filter "*.csv"

if($SourceFilesArray) {
    # $SourceFilesArray is not empty/contains list of specified files
    Invoke-Sqlcmd -ServerInstance "100.000.000.001" -Database "msdb" -Query "EXEC dbo.sp_start_job 'MSSQLJOBNAME'"
} else {
    # run this if $SourceFilesArray is empty/no files found
    Invoke-Sqlcmd -ServerInstance "100.000.000.001" -Database "msdb" -Query "EXEC dbo.sp_start_job 'MSSQLJOBNAME'"
}

推荐阅读