2015-06-09 36 views
0

我已經嘗試使用繼承DataContext.CreateDatabase()的類創建新數據庫,並且我也嘗試了一個來自StackExchange帖子的方法,但都導致拋出相同的異常與類似的追溯。我安裝了SQL Server 2008,但我從未使用過,所以完全有可能我沒有配置基本的東西。動態創建.mdf數據庫時文件激活錯誤

我曾嘗試:

https://msdn.microsoft.com/en-us/library/bb399420(v=vs.110).aspx

using System; 
using System.Data.Linq; 
using System.Data.Linq.Mapping; 
namespace sandbox 
{ 
    public class MyDVDs : DataContext 
    { 
     public Table<DVD> DVDs; 
     public MyDVDs(string connection) : base(connection) { } 
    } 

    [Table(Name = "DVDTable")] 
    public class DVD 
    { 
     [Column(IsPrimaryKey = true)] 
     public string Title; 
     [Column] 
     public string Rating; 
    } 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      MyDVDs db = new MyDVDs("mydvds.mdf"); 
      db.CreateDatabase(); 
     } 
    } 
} 

Create .mdf/.sdf database dynamically

public static void CreateSqlDatabase(string filename) 
{ 
    string databaseName = System.IO.Path.GetFileNameWithoutExtension(filename); 
    using (var connection = new System.Data.SqlClient.SqlConnection(
     "Data Source=.\\sqlexpress;Initial Catalog=tempdb; Integrated Security=true;User Instance=True;")) 
    { 
     connection.Open(); 
     using (var command = connection.CreateCommand()) 
     { 
      command.CommandText = 
       String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", databaseName, filename); 
      command.ExecuteNonQuery(); 

      command.CommandText = 
       String.Format("EXEC sp_detach_db '{0}', 'true'", databaseName); 
      command.ExecuteNonQuery(); 
     } 
    } 
} 

異常和微量元素:

System.Data.SqlClient.SqlException:文件活化法制發生錯誤。 物理文件名'testdb.mdf'可能不正確。 Diagnose和 更正其他錯誤,然後重試該操作。 CREATE DATABASE 失敗。列出的某些文件名不能被創建。檢查相關的 錯誤。

在System.Data.SqlClient.SqlConnection.OnError(SqlException異常, 布爾breakConnection,Action`1 wrapCloseInAction)

在System.Data.SqlClient.SqlInternalConnection.OnError(SQLEXCEPTION 例外,布爾breakConnection,動作'1 wrapCloseInAction)

在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布爾callerHasConnectionLock,布爾asyncClose)

在System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, 的SqlCommand cmdHandler,SqlDataReader的數據流, BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,布爾& dataReady)

在System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串 方法名,布爾異步,的Int32超時,布爾asyncWrite)

在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 完成,字符串方法名,布爾sendToPipe,的Int32超時, 布爾asyncWrite)

在System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

在sandbox.Program.CreateSqlDatabase(字符串文件名)

在sandbox.Program.Main(字串[] args)

回答

0

顯然,創建DataContext對象時需要指定完整的文件路徑。僅僅使用「mydvds.mdf」是不夠的。