2010-12-02 13 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コードはデータベース/ログファイルを新しいパスに作成します。

なぜこの現象が発生しているのですか?

編集: 1つの提案は、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(); 
関連する問題