在附加数据库后使用Powershell,如何设置逻辑名称

时间:2013-10-16 23:07:36

标签: powershell powershell-v3.0

我在文件夹位置有一个标准的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访问。

2 个答案:

答案 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对象以查看更改。