使用SMO更改SQL Server数据库默认位置

时间:2010-12-02 02:20:44

标签: c# sql-server sql-server-2008 smo

我使用以下代码更改服务器数据库的默认位置(SQL Server保留新数据库文件和日志文件的位置):

using Microsoft.SqlServer.Management.Smo;

Server smoServer = new Server(new ServerConnection(server, username, password));
server.DefaultFile = newPath;
server.Alter();
server.Refresh();

// Now create a database in the new location
Database smoDatabase = new Database(smoServer, database);
smoDatabase.Create();
smoServer.Refresh();

这是我的问题:我可以查看SQL Server Management Studio,并看到数据库默认位置的服务器属性已更改为newPath。但是,当我使用SMO创建新数据库时,将在旧路径中创建新数据库和日志文件。

重新启动SQL Server实例后,SMO代码会在新路径中创建数据库/日志文件。

为什么我会遇到这种行为?

编辑:一个建议是,在重新启动Sql Server实例之前,实际上不会发生更改。但是,如果我打开SSMS并在实例上创建一个新数据库,它将在新路径中创建,而不必重新启动

1 个答案:

答案 0 :(得分:5)

您需要明确添加有关数据和日志文件的信息:

// Now create a database in the new location
Database smoDatabase = new Database(smoServer, database);

FileGroup fg = new FileGroup(smoDatabase, "PRIMARY");
DataFile df = new DataFile(fg, "File1", @"c:\sql\file1.mdf");
LogFile lf = new LogFile(smoDatabase, "Log01", @"c:\sql\Log1.ldf");


smoDatabase.Create();
smoServer.Refresh();