如何以编程方式创建 localdb .mdf?

2024-03-18

如何以编程方式创建 localdb .mdf?

可接受的解决方案excludeVisual Studio、ssms、aspnet_regsql。

一个简单的解决方案可能看起来像这样:

static void Main(string[] args)
{
    using (var con = new SqlConnection(@"Integrated Security=SSPI;Data Source=(LocalDb)\v11.0;AttachDbFilename=test.mdf"))
    {
        con.Open();
        using (var cmd = new SqlCommand("CREATE DATABASE test", con))
        {
            cmd.CommandType = CommandType.Text;
            cmd.ExecuteNonQuery();
        }
    }
}

但当然,这在 SqlConnection.Open 中失败并出现错误

尝试为文件 test.mdf 附加自动命名数据库失败。存在同名数据库,或无法打开指定文件,或位于 UNC 共享上。

如果指定的 .mdf 不存在,则无法连接到数据库。

那么...如何创建一个呢?


不得不从 Stackoverflow 和伟大的人那里拼凑出几个答案SQL Server 2012 Express LocalDB 入门 https://www.mssqltips.com/sqlservertip/2694/getting-started-with-sql-server-2012-express-localdb/文章来自@AaronBertrand

代码假设已安装 Dapper.NET:

PM> 安装包Dapper https://www.nuget.org/packages/Dapper

程序化创建:

var dbServerName = "SERVER_NAME";
var dbName = "DATABASE_NAME";

var infoResult = SqlLocalDbCommand($"info {dbServerName}");

var needsCreated = infoResult?.Trim().EndsWith($"\"{dbServerName}\" doesn't exist!");

if (needsCreated.GetValueOrDefault(false))
{
    var createResult = SqlLocalDbCommand($"create {dbServerName} -s");

    var success = createResult?.Trim().EndsWith($"\"{dbServerName}\" started.");

    if (false == success)
    {
        var msg = $"Failed to create database:{Environment.NewLine}{createResult}"
        throw new ApplicationException(msg);
    }

    var master = $@"Server=(localdb)\{dbServerName};Integrated Security=True;"
    using (var conn = new SqlConnection(master))
    {
        var result = conn.Execute($"CREATE DATABASE {dbName}");
    }

  var @new = $@"Server=(localdb)\{dbServerName};Integrated Security=True;Database={dbName}"
    using (var conn = new SqlConnection(@new))
    {
        //verify i can access my new database
        var tables = conn.Query($"SELECT * FROM {dbName}.INFORMATION_SCHEMA.Tables");
    }
}

Helper (谢谢T30 https://stackoverflow.com/a/29753402/37055):

/// <summary>
///     Executes a command against SqlLocalDB
/// </summary>
/// <remarks></remarks>
/// <param name="arguments">The arguments to pass to SqlLocalDB.exe</param>
/// <returns></returns>
/// <exception cref="System.ApplicationException">Error returned from process</exception>
private static string SqlLocalDbCommand(string arguments)
{
    var process = new Process
    {
        StartInfo =
        {
            FileName = "SqlLocalDB",
            Arguments = arguments,
            UseShellExecute = false,
            RedirectStandardOutput = true,
            RedirectStandardError = true
        }
    };

    process.Start();
    //* Read the output (or the error)
    var output = process.StandardOutput.ReadToEnd();
    Console.WriteLine(output);
    var err = process.StandardError.ReadToEnd();
    Console.WriteLine(err);
    process.WaitForExit();

    if (err.Exists()) throw new ApplicationException(err); //Is LocalDB installed?

    return output;
}

请注意,使用此解决方案,您将看不到 mdf 文件,我确信它们存在于某个用户文件夹中,但关键是您将通过连接字符串进行连接

(localdb)\SERVER_NAME;Integrated Security=True;Database=DATABASE_NAME
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式创建 localdb .mdf? 的相关文章

  • 何时选择在 SSIS 的 Lookup 组件中进行缓存

    在SSIS查找中有3种类型的缓存 完整 部分和无缓存 在我们的解决方案中 它一直使用默认的 完整 是否有任何特定的场景 可以使用部分缓存 无缓存 在我们的解决方案中 锁定表总是很小 例如 我们一直在查看小表来获取类型或获取描述 这可能是它在
  • 在sql server中使用case语句更新多列

    我想使用 case 语句更新表 查询是这样的 select case columnname when name1 then begin update table set pay1 pay1 100 pay2 pay2 20 pay3 pa
  • 无法在 .aspx 中的查询字符串中传递多个值以在运行时报告

    这应该是一个简单的过程 但现在它变成了烦人的问题 我试图在 VS2012 中的 ASP Net Web 报告中的查询字符串中传递多个值 该页面必须将多个值作为参数传递给报表 当我发送单个值 例如 abc 时 数据会被正确提取 但是当我传递由
  • 将 nvarchar 转换/转换为日期时间

    我有表 id timestamp 1 31 10 2020 16 32 11 2 09 09 2020 09 15 49 3 22 04 2020 02 48 15 表中有大量这些数据 列时间戳是数据类型 nvarchar 我需要按日期对数
  • NOCHECK 不禁用外键引用

    表创建脚本 CREATE TABLE dbo details id int NULL details varchar max NULL CREATE TABLE dbo name id int IDENTITY 1 1 NOT FOR RE
  • 在python中读取.dat文件

    我有一个 dat 文件 我不知道它是如何创建的 使用了什么分隔符以及有关它的任何详细信息 我只有相应的 mdf 和 csv 文件 就这样 python 有什么方法可以读取这个 dat 文件吗 我尝试过的几种方法 file 736 2 Per
  • select unique * 查询有多贵

    在sql server 2012中 我有一个包含超过2500万行且有重复项的表 该表没有唯一索引 它只有一个非聚集索引 我想消除重复项 所以我想到了以下内容 select distinct into temp table from prim
  • 使用 sp_rename 重命名 SQL 表有什么好处?

    我在 sql server 2012 中有一个 sql 表需要重命名 我知道在其他数据库系统中执行此操作的方法如下 ALTER TABLE table name RENAME TO new table name 然而 SQL Server
  • SQL Server 数据工具忽略架构比较的重构

    我遇到了与此处描述的问题看似相同的问题 架构比较脚本生成会忽略 SSDT 重构重命名 https stackoverflow com questions 20082079 ssdt refactor rename is ignored by
  • 实体框架和 SQL Server 2012 分页

    SQL Server 2012 引入了一种使用 FETCH 和 OFFSET 的更有效的分页机制 这可能会对使用大量分页的应用程序的性能产生重大影响 实体框架 5 支持吗 因此 如果我使用 EF 通过 Take Skip 进行分页 如果 E
  • 如何使用 LTRIM/RTRIM 搜索和替换前导/尾随空格?

    我正在尝试清除充满价格的 NVARCHAR MAX 列中的前导空格和尾随空格 使用 NVARCHAR 由于从多个操作系统导入带有奇数字符的数据 此时 我有一个 t sql 命令可以从静态价格中删除前导 尾随空格 然而 当谈到利用同一个命令来
  • 为什么 SQL Server SET DEADLOCK_PRIORITY HIGH 不被遵守?

    我捕获了 SQL Server 2012 死锁图 使用盖尔 肖的 https www red gate com simple talk sql performance sql server deadlocks by example 查询 显
  • 如何在 SQL Server 中查找运行跟踪?

    有没有一种简单的方法来确定已设置的痕迹sp trace create在 SQL Server 2000 上 SQL Server 2005 2008 2012 或 2014 怎么样 SQL Server 2005 向前 SELECT FRO
  • 复制已过滤的数据子集:合并或事务复制?

    首先感谢您的阅读 我需要复制基于连接过滤器的数据子集 基于与其他表的联接的过滤器 Microsoft 使用联接过滤器 您可以将行过滤器从一个已发布的表扩展到另一个 这是设置 SQL Server 2012 事务复制订阅上的复制源 复制需要是
  • SQL性能问题如何修改下面的脚本?

    我编写了一个 SQL 查询 涉及 INNER JOIN LEFT OUTER JOIN UNION 和一个需要很长时间执行的子查询 我的 SQL 技能不是很好 如果有人可以帮助我如何优化以下查询以使其更快 我将不胜感激 SELECT Bra
  • SQL Server 2012 列标识增量在第 7 个条目上从 6 跳到 1000+ [重复]

    这个问题在这里已经有答案了 我有一个奇怪的场景 其中 SQL Server 2012 数据库中的 auto Identity int 列没有正确递增 假设我有一个使用 int auto 标识作为主键的表 它偶尔会跳过增量 例如 1 2 3
  • 创建从最后一个索引增加的列[重复]

    这个问题在这里已经有答案了 我需要为 InvoiceID 生成一列 我想像这样保留本专栏的格式 INV0000001 INV0000002 INV0000010 INV0000011 and so on 正如您所看到的 该列随着最后一个索引
  • 查询具有相同ID的同一列中具有不同值的SQL表

    我有一个 SQL Server 2012 表ID First Name and Last name The ID每个人都是唯一的 但由于历史提要中的错误 不同的人被分配了相同的 ID ID FirstName LastName 1 ABC
  • SQL 查询返回按周、月和年分组的记录。没有记录的周数应返回 0

    给出以下数据 ID CreatedDate ID1 2014 06 04 01 40 56 880 ID8 2014 06 05 00 27 02 403 ID6 2014 06 04 01 51 47 060 ID7 2014 06 05
  • Powershell SQL Server数据库连接和连接超时问题

    我有一个连接到 SQL Server 2012 数据库的 powershell 脚本 该脚本运行 SQL 查询并将结果集放入数据表中 以将格式化的电子邮件发送给相关方 下面是问题所在的代码片段 CBA New Object System D

随机推荐

  • 按类前缀定位元素

    假设我有以下元素 div class home div class tab231891230 div div class tab121232441 div div class tab123134545 div div 如何使用 jQuery
  • 查找二维 numpy 数组中的共同元素

    如果我有两个 或更多 二维数组 如何在给定行号的情况下仅获取数组之间的公共元素 例如 我有以下格式的数组 time position velocity acceleration 我想让两个数组只具有相同的时间元素 所以第 0 行 我可以使用
  • 使用 wmi win32 类检查可用端口?

    我正在使用 inno setup 来制作安装文件 它需要提取本地 IP 地址 我可以通过查询 Win32 NetworkAdapterConfiguration 来完成 并检查特定端口是否打开以供软件运行 我目前正在寻找答案 我意识到 WM
  • 将我的 ASP.NET MVC 页面另存为 pdf

    如何将 ASP NET MVC 页面保存为 PDF 有第三方库可以为您提供非常好的保真度 我写这个帖子 http blog muhimbi com 2010 08 convert sharepoint html pages to pdf h
  • 程序集 - 无法设置断点 lldb

    我用这些选项组装了nasm O0 g f macho64但 lldb 抱怨 无法将断点解析到任何实际位置 当我尝试在文件中的行号处设置任何断点时 我已经开始尝试学习 OS X 的 64 位汇编 但到目前为止这确实是一个挑战 似乎几乎没有任何
  • Python绘图图像保存错误

    我是Python新手 我已经使用 Django 编写了 Web 服务来将图像保存在服务器中 我正在尝试使用下面的代码将绘图保存为图像 并且它可以正常工作 3 次 之后 Python 会抛出错误 如何解决这个问题 Exception igno
  • 我可以像这样使用 try-catch-finally 吗?

    我在用着try catch多年来 但我从未学会如何以及何时使用finally 因为我从来不明白这一点finally 我读过坏书 我想问你关于使用finally就我而言 我的代码示例应该解释一切 s c MyClassForFileHandl
  • Flyspell 无法在 emacs 中加载 LaTeX 文件

    下列的这个网页 http www sop inria fr members Manuel Serrano flyspell flyspell html 我编辑了 emacs 文件并添加了以下行 add hook LaTeX mode hoo
  • 使用 ::SysFreeString() 释放 BSTR。更多平台依赖性?

    我正在编写一个 COM 服务器 它有很多接口和方法 大多数方法都将 BSTR 作为参数并作为用于返回的本地参数 一个片段看起来像 更新5 真正的代码 它根据数据库的特定条件从一堆数据中获取数据以填充对象数组 STDMETHODIMP CAp
  • PHP - 使用socket_recv时出错

    在此函数内运行 socket recv 时出现套接字错误 function readByteXByteSIBmsg msg buf try while ret socket recv this gt kpSocket buf 8192 0
  • Mercurial 和 NTFS 备用数据流

    Mercurial 如何处理备用数据流 在 NTFS 文件系统中 如果它不能处理这个问题 是否有 DCVS 可以处理 EDIT 当我更改版本时update ADS 会发生什么情况 它丢失 删除 了吗 也有版本吗 是不是都被忽略了 Mercu
  • 为什么 catch 参数是隐式最终参数?

    catch IOException SQLException ex logger log ex throw ex 这是为什么ex隐式最终 让 ex 隐式最终有什么用 它是隐式最终的 因为更改所指向的对象对您来说没有意义ex 特别是在这种情况
  • 计算UIScrollView的minimumZoomScale

    我有一个图像 我想将其加载到图像视图中 并设置minimumZoomScale 以及将zoomScale设置为aspectFill之类的比例 我计算如下 configure the map image scroll view iImageS
  • 以零长度调用 write() 会产生什么后果?

    在 Linux 中处于相当高的水平write 函数 它会过滤掉写入 0 长度缓冲区的请求 这是有道理的 谁愿意操作系统浪费时间钻探各层只是为了确定没有任何工作要做 嗯 我 这与Linux 内核中的 I2C 写入确认轮询 https stac
  • 绑定到 ASP.NET GridView 时的 TypeConverter

    我试图将对象的 IList 绑定到 GridView 的数据源 并且该对象的属性之一是枚举 当对象绑定到 GridView 行时 我试图在枚举上使用 TypeConverter 来使用说明 它看起来不像我的EnumConverter Con
  • ImportError:libcublas.so.9.0:无法打开共享对象文件

    目前我在 Gpu 支持系统中安装了 cuda 8 0 和 cuda 9 0 我在从 keras 模块导入时遇到了这个错误 它说无法加载本机张量流运行时 我收到的错误日志是 Traceback most recent call last Fi
  • ViewTreeObserver 布局的 getHeight() 返回零

    我在用视图树观察者 in OnCreate获取工具栏和底部布局高度的方法 但我仍然得到0 height 为什么 难道我做错了什么 这就是我的调用方式 ViewTreeObserver viewTreeObserver toolbar get
  • 将内容添加到 Django Admin 中的每个视图(base_site.html)

    我想将对象列表传递到 Django 管理中的自定义模板 删除视图 and 更改视图 我修改了 base site html 以包含导航栏 并且我想从视图中将对象列表传递到导航栏 我之前也为 django admin index change
  • 重载方法的 Javadoc 重用

    我正在开发一个 API 其中包含许多名称相同的方法 只是签名有所不同 我认为这相当常见 它们都做同样的事情 除了如果用户不想指定的话 它们会默认初始化各种值 作为一个易于理解的例子 考虑 public interface Forest pu
  • 如何以编程方式创建 localdb .mdf?

    如何以编程方式创建 localdb mdf 可接受的解决方案excludeVisual Studio ssms aspnet regsql 一个简单的解决方案可能看起来像这样 static void Main string args usi