2010-12-02 108 views
4

我使用下面的代碼更改服務器數據庫的默認位置(即SQL Server保留新的數據庫文件和日誌文件)的SQL Server數據庫的默認位置:使用SMO更改

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

我有同樣的問題,它的駕駛我瘋了! – 2011-11-08 14:21:01

回答

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();