2016-06-24 3 views
0

SQL Server SMOクラスを使用してデータベースを作成しようとしていますが、dbを作成する行がFailedOperationExceptionをスローします。SMOデータベース作成の例外:「PRIMARYファイルグループに少なくとも1つのファイルが必要です」

内部例外(SmoException)には、「PRIMARYファイルグループに少なくとも1つのファイルが必要です」というメッセージがあります。

しかし、私はプライマリファイルグループをコードに設定しています(少なくとも私はそうだと思います)。データファイル(.IsPrimaryFile = True)をグループに追加します。

わかりやすいものが欠けていると思います。

任意の助けいただければ幸いです: - )...

Imports Microsoft.SqlServer.Management.Smo 

Dim serverName = "(local)" 
Dim databaseName = "TestNew3" 

Dim sourceSrv = New Server(serverName) 

Dim db As Database 
db = New Database(sourceSrv, databaseName) 

db.AutoCreateStatisticsEnabled = True 
db.AutoUpdateStatisticsEnabled = True 
db.AutoUpdateStatisticsAsync = True 

Dim fileGroup = New FileGroup(db, "PRIMARY") 
fileGroup.IsDefault = True 
db.FileGroups.Add(fileGroup) 

Dim dataFile = New DataFile(
          fileGroup, 
          databaseName, 
          String.Format(
             "{0}\{1}.mdf", 
             sourceSrv.MasterDBPath, 
             databaseName)) 
dataFile.GrowthType = FileGrowthType.KB 
dataFile.Growth = 10240 
dataFile.IsPrimaryFile = True 

Dim logFile = New LogFile(
          db, 
          databaseName, 
          String.Format(
             "{0}\{1}_log.ldf", 
             sourceSrv.MasterDBPath, 
             databaseName)) 
logFile.GrowthType = FileGrowthType.KB 
logFile.Growth = 10240 

db.LogFiles.Add(logFile) 

db.Create() '<-- THROWS EXCEPTION ("The PRIMARY filegroup must have at least one file") 

答えて

0

は、データファイルを明示的にファイルグループに追加する必要がありますように、それが最初のようにファイルグループを渡されたにも関わらず(それは自分自身を追加しないルックスそのコンストラクタのパラメータ)。

dataFile.Growth = 10240 
dataFile.IsPrimaryFile = True 

fileGroup.Files.Add(dataFile) 

元のコードではマイナーなバグが(.LDF名前は一意ではありませんでしたし、TrueにfileGroup.IsDefaultの設定がエラーの原因となった)もありました。

Dim serverName = "(local)" 
Dim databaseName = "TestNew5" 

Dim sourceSrv = New Server(serverName) 

Dim db As Database 
db = New Database(sourceSrv, databaseName) 

db.AutoCreateStatisticsEnabled = True 
db.AutoUpdateStatisticsEnabled = True 
db.AutoUpdateStatisticsAsync = True 

Dim fileGroup = New FileGroup(db, "PRIMARY") 

Dim dataFile = New DataFile(
          fileGroup, 
          databaseName, 
          String.Format(
             "{0}\{1}.mdf", 
             sourceSrv.MasterDBPath, 
             databaseName)) 
dataFile.GrowthType = FileGrowthType.KB 
dataFile.Growth = 10240 
dataFile.IsPrimaryFile = True 

fileGroup.Files.Add(dataFile) 

db.FileGroups.Add(fileGroup) 

Dim logFile = New LogFile(
          db, 
          databaseName + "_log", 
          String.Format(
             "{0}\{1}_1.ldf", 
             sourceSrv.MasterDBPath, 
             databaseName)) 
logFile.GrowthType = FileGrowthType.KB 
logFile.Growth = 10240 

db.LogFiles.Add(logFile) 

db.Create() 

はここで完全に動作するコードです

関連する問題