动态创建.mdf数据库时文件激活错误

本文关键字:文件 激活 错误 数据库 创建 mdf 动态 | 更新日期: 2023-09-27 17:54:52

我尝试使用继承DataContext.CreateDatabase()的类创建一个新数据库,我也尝试了从StackExchange post的方法,但两者都导致相同的异常被抛出类似的追溯。我安装了SQL Server 2008,但我从未使用过它,所以完全有可能我没有基本配置。

我已经试过了:

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

创建.mdf/。动态SDF数据库

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。发生文件激活错误。物理文件名"testdb"。Mdf '可能不正确。诊断和更正其他错误,然后重试操作。创建数据库失败了。无法创建列出的一些文件名。检查相关的错误。

在System.Data.SqlClient.SqlConnection

。OnError (SqlException异常,breakConnection, Action ' 1 wrapCloseInAction)

System.Data.SqlClient.SqlInternalConnection.OnError (SqlException异常exception, Boolean breakConnection, Action ' 1 wrapCloseInAction)

在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObjectstatobj, Boolean callerHasConnectionLock, Boolean asyncClose)

在System.Data.SqlClient.TdsParser

。TryRun (RunBehavior RunBehavior,SqlCommand cmdHandler, SqlDataReader dataStreamBulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObjectstateObj Boolean&dataReady)

System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串methodName, Boolean async, Int32 timeout, Boolean asyncWrite)

在System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (TaskCompletionSource"1sendToPipe, Int32超时;布尔asyncWrite)

System.Data.SqlClient.SqlCommand.ExecuteNonQuery ()

在sandbox.Program

。CreateSqlDatabase(String filename)

在sandbox.Program

。Main (String [] args)

动态创建.mdf数据库时文件激活错误

显然,在创建DataContext对象时需要指定完整的文件路径。只需使用"我的dvd"。