我使用以下代码更改服务器数据库的默认位置(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并在实例上创建一个新数据库,它将在新路径中创建,而不必重新启动。
答案 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();