使用 powershell 创建 Sql 数据库搜索 dacpac 并使用其位于的文件夹命名数据库
Create Sql DB with powershell searching for dacpac and naming db with Folder its located in
我正在尝试通过在文件夹中搜索 *.dacpac 文件在 Sql 服务器中创建数据库,对于找到的每个 .dacpac,我需要创建一个数据库,其名称与 .dacpac 所在的文件夹相同发现于
例子
C:\文件夹\包含
- C:\Folder\Project1\mydatabase.dacpac
- C:\Folder\Project2\mydatabase.dacpac
- C:\Folder\Project3\mydatabase.dacpac
创建 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:"."
}
我正在尝试通过在文件夹中搜索 *.dacpac 文件在 Sql 服务器中创建数据库,对于找到的每个 .dacpac,我需要创建一个数据库,其名称与 .dacpac 所在的文件夹相同发现于
例子
C:\文件夹\包含
- C:\Folder\Project1\mydatabase.dacpac
- C:\Folder\Project2\mydatabase.dacpac
- C:\Folder\Project3\mydatabase.dacpac
创建 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:"."
}