LocalDB
LocalDB专门为开发商。它是非常容易安装,无需管理,但它提供了相同的T-SQL语言,编程表面和客户端供应商定期的SQL Server Express。实际上,目标SQL Server不再需要安装和管理他们的笔记本电脑和其他开发机器的SQL Server Express全实例开发。此外,如果简单(和限制)LocalDB适合目标应用环境的需要,开发人员可以继续使用在生产中,为使一个很好的嵌入式数据库LocalDB池。
通过上文的了解,明白了LocalDB 相当于是一个比较小型的数据库,它没有SQL Server 那样繁复的安装过程和庞大的体积,相对于普通的数据库来讲,它可以称为很轻量级别的数据库。
接下来我会根据我目前的学习和了解,来学习一下这个localdb。
环境
一般来讲,localdb 是作为开发者来使用的,主要的作用就是用于满足开发这个的开发需求,所以从VS2012 和 SQL Server 2008 一般都自带有localdb了 ,这两款自带的组件的localdb 版本是 sql localdb 2012 查询的版本号为v11.0。
这个版本localdb 是没有默认实例。
后面自带的版本的有 VS 2013~2017 这里到目前的sql localdb的版本是2012~2016版本,从VS2013 自带的local 2014版本之后,到目前我所了解到的最新版本local 2017 都是有一个默认的实例名MSSQLocalDB。这个实例是可以直接使用的。
接下来我们讲一下,一般在不安装任何VS 和SQL server的 安装环境,这里的windows 系统,分别是win7 和 win10 。
这里我推荐使用的是localdb 2016这个版本,因为我本机装的vs2017 ,自带的这个版本,这个版本的localdb 相较于其他的版本在我测试了很多次之后,发现这个版本是最好使用的一个版本。
要达成localdb 2016的使用,目前我发现的环境,只需要满足两个条件就可以一台完全干净的windows (这里我指的是win7 和win10 我都测试过可以ping 通数据库)系统下使用,这两个环境分别是.net 4.0 和 Microsoft SQL Server 2012 Native Client 。
使用方法
localdb 的使用方法,虽然网上很多,但是我还是贴出来。(这里注意所有的CMD命令都要管理员运行)
查询所有 实例
sqllocaldb i 查询当前所有的实例(包括共享名)
要是查单独的 sqllocaldb i (你要查询的实例名)
这里如果状态是启动的,那么就会有实例管道名(实例管道名可以),这里的自动创建指的是 是不是localdb 自带的实例名,没有影响。
这里我们创建一个新的来完整的测试一遍。
1、创建一个新的实例名
sqllocaldb c MyLocaldb
2、启动这个实例名
sqllocaldb s MyLocaldb
3、 查看实例名详情
sqllocaldb i MyLocaldb
4、停止这个实例名
sqllocaldb p MyLocaldb
5、删除这个实例名
sqllocaldb d MyLocaldb
在创建,并启动实例名之后,我们可以直接通过 (localdb)\MyLocaldb 然后通过windows用户来访问数据库。
这里我推荐使用Navicat Premium 来测试连接是否成功。在熟练之后,就可以不使用这个, 直接去试了。
配置文件的写法参考。
在ASP.NET程序中配置的连接字符串如下:
// 指定连接到这个数据库文件MDF
Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true;AttachDbFileName=D:\Data\MyDB1.mdf
// 不指定到MDF文件路径,指定默认数据库名
Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true;Initial Catalog=MyDB1"
// 类似第一种
Data Source=(localdb)\MSSQLLocalDB;Integrated Security=true;AttachDbFileName=D:\Data\MyDB1.mdf
// 指定用户名和密码(目前使用这是这种,简单明了)
server=(localdb)\MSSQLLocalDB;uid=sa;pwd=123456;Initial Catalog=MyDB1
共享实例名
这里特别提一下共享实例名
共享实例名要用到的情况是你同时有几个进程同时需要访问这个数据库的话,那么会发生占用的情况,这种情况就需要共享实例名来处理这个问题了。
共享实例名的使用方法。
1、声明一个共享实例名。
sqllocaldb h "MyLocaldb" "mylocaldb"
这样我们就可以通过共享实例名mylocaldb来访问到实例名MyLocaldb 了
2、访问共享实例名
(localdb)\.\mylocaldb
(这里创建完了共享实例名有时候会出现访问超时,或者找不到这个共享名。这里我查过官方的说法是这个会有一丢丢延迟,要等一会才能访问,我一般的做法是重启电脑就能访问)
3、停止共享实例名
sqllocaldb u .\mylocaldb
停止完了就不能使用了。
一般要
// 使用SSMS连接工具连接时,也要使用管理员权限打开.实例名变成 (localdb)\.\mylocaldb 第一个\后面的.\mylocaldb 就是共享实例别名
为什么上面的SSMS要使用管理员工具打开,因为下面的验证方式是帐号密码形式的,如果使用WINDOWS验证,则不需要.
给LOCALDB设定连接帐号
到这步之后,将WEB程序的连接字符串写成指定帐号和密码的这种,结果依然不能访问,还是没有权限,
server=(localdb)\.\mylocaldb;uid=sa;pwd=123456;AttachDbFileName=D:\Data\MyDB1.mdf
查看数据库帐号,发现LOCALDB并没有SA这个帐号,于是加上它,并且给于 DB_OWNER
除了这种方法之外,还有一种不用设置sa的方法,但是我目前只用用于在服务之中调用的方法,
如果你同时使用windows服务访问这个数据库,可以尝试一下这个方法,
在安装完成之后,找到这个服务,然后切到登录,到下面红框里面输入,管理员账号的账号和密码。然后重启服务。
补充的内容
localdb 创建的实例名所在的文件夹(这里可以查看log)
C:\Users\XXX\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances
这里存着所有的实例名,如果删除实例名之后,可以来这里检查一下, 有没有删除,没有的话,你就帮帮忙,因为localdb 的删除不是很给力。
localdb 启动文件。(你所有的命令都是它在执行。)
C:\Program Files\Microsoft SQL Server\110\Tools\Binn
这里的110是不一定的,是跟你安装的localdb 版本来的,比如 localdb 2012就是110,2016就是130 ,如果你电脑装着多种版本的localdb ,有一句语法可以指定使用哪个版本
REM Create an instance of LocalDB
"C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe" create LocalDBApp1
REM Start the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe" start LocalDBApp1
REM Gather information about the instance of LocalDB
"C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe" info LocalDBApp1
根据你的版本调整数值。
以上就是目前我对sql localdb 的全部了解。基本都能在网上找到,我这里只是做个一个学习的总结。
主要参考了: