使用 powershell 创建 Sql 数据库搜索 dacpac 并使用其位于的文件夹命名数据库

Create Sql DB with powershell searching for dacpac and naming db with Folder its located in

我正在尝试通过在文件夹中搜索 *.dacpac 文件在 Sql 服务器中创建数据库,对于找到的每个 .dacpac,我需要创建一个数据库,其名称与 .dacpac 所在的文件夹相同发现于

例子

C:\文件夹\包含

创建 Db 的脚本

cd "C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin"
$createDB = .\sqlpackage.exe /Action:Publish /SourceFile:"c:\Folder\Project1\mydatabase.dacpac" /TargetDatabaseName:"Project1" /TargetServerName:"(LocalDB)\MSSQLLocalDB"

我可以使用以下命令获取文件夹名称以用作 TargetDatabaseName

 PS C:\> $FolderName = Get-ChildItem C:\Folder | select -ExpandProperty Name
    $FolderName
    Project1
    Project2
    Project3

我正在尝试使用 foreach 循环查找 dacpac 文件并将它们用作 SourceFile,然后查找 FolderName 以用作 TargetDatabaseName

$FolderName = Get-ChildItem C:\Folder | select -ExpandProperty Name
$dacpacfile = Get-ChildItem C:\Folder -Recurse -Include *.dacpac
    foreach ($dacpac in $dacpacfile){
        $createDB = .\sqlpackage.exe /Action:Publish /SourceFile:$dacpacfile /TargetDatabaseName:$FolderName /TargetServerName:"(LocalDB)\MSSQLLocalDB"}

收到的错误是:

.\sqlpackage.exe : * Could not load package from 'C:\Folder\Project1\mydatabase.dacpac C:\Folder\Project2\mydatabase.dacpac C:\Folder\Project3\mydatabase.dacpac'. At line:4 char:21 + ... $createDB = .\sqlpackage.exe /Action:Publish /SourceFile:$dacpacfile ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (* Could not l...tabase.dacpac'.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError

我希望我需要创建两个数组并尝试一起遍历它们,但是无法正确执行此操作,将不胜感激任何帮助。

在这里,试试这个:

$dacpacFiles = Get-ChildItem C:\project -Recurse -Include *.dacpac
cd "C:\Program Files (x86)\Microsoft SQL Server0\DAC\bin"
foreach ($dacpacFile in $dacpacFiles)
{
    $dir = Split-Path $dacpacFile.Directory -Leaf
    $filePath = $dacpacFile.FullName
    $createDB = .\sqlpackage.exe /Action:Publish /SourceFile:$filePath /TargetDatabaseName:$dir /TargetServerName:"."
}