我在文件夹位置有一个标准的vanilla数据库,例如MyDatabase.mdf, MyDatabases.ldf
。我的PowerShell脚本正在将这些文件复制到SQL Server的数据文件夹中,并在此过程中重命名,例如MyProject.mdf, MyProject.ldf
。
然后我附加数据库,但原始香草.mdf
和.ldf
的逻辑名称仍然存在。我无法弄清楚如何使用PowerShell更改这些内容。我可以通过恢复来做到这一点,但想知道如何附加。
$mdfFileName = "DataFolder\MyProject.mdf"
$ldfFileName = "DataFolder\MyProject.ldf"
$sc = New-Object System.Collections.Specialized.StringCollection
$sc.Add($mdfFileName)
$sc.Add($ldfFileName)
$server.AttachDatabase("MyProject", $sc)
一个测试,我试过了
$db.LogFiles[0].Name
并返回逻辑名称,但只能作为getter访问。
答案 0 :(得分:0)
示例代码缺少许多功能。您似乎正在使用SMO来处理数据库。为什么不使用TSQL呢?它可以使用Invoke-SqlCmd
执行,也可以使用.Net中的System.Data.SqlClient
类执行。
CREATE DATABASE [MyProject] ON
(FILENAME = 'some\path\MyProject.mdf'), (FILENAME = 'some\path\MyProject.ldf')
FOR ATTACH;
答案 1 :(得分:0)
您可以调用重命名方法重命名逻辑文件,然后重命名方法。之后,您需要使用刷新方法刷新SMO对象以查看更改。