SQL Server 2012 Express LocalDB 管理并与ArcGIS相连

      系统里装了VS2013 开发环境,自带的就是SQL Server 2012 Express LocalDB,安装 SQL Server 2012 Express LocalDB 完后,默认会有个自动实例为 v11.0,但之后若要建立其他实例不再需要运行安装程序,只需通过 SqlLocalDB.exe 工具程序即可任意建立新的实例,建立一个实例的时间只需要几秒!在同一台主机里,每个用户都可以建立自己的 LocalDB 实例,每个实例是以不同使用者身份运行不同进程,所以不同使用者可有同名的实例!关于localdb的介绍,可以参考http://www.cnblogs.com/shanyou/archive/2012/09/05/2672590.html  和 http://www.csdn.net/article/2012-03-29/313675 这两篇文章。SQL Server 2012 问世之前,SQL Server 依据不同的运行环境各有推出不同的版本,在运行上也有不同的限制,例如:SQL Server Enterprise ( 企业版,适合大量数据或高可用性环境 )SQL Server Standard ( 标准版,适合用在一般数据库处理环境 )SQL Server Express ( 轻量版,适合用在单机或小量数据库的环境 )SQL Server Compact ( 精简版,又称 SQL CE,适用于行动化或嵌入式系统环境 )。SQL Server 2012 Express LocalDB 又是甚么样的一个定位呢?从数据库系统复杂度加以重新排序过如下:SQL Server Enterprise > Standard > Express > LocalDB > Compact 。

     一、 了解 SQL Server 2012 Express LocalDB 实例的数据库文件所在路径

     在安装好 SQL Server 2012 Express LocalDB 之后,默认会有个实例名为 v11.0,该实例的相关文件所在目录通常位于以下目录 ( 请将 <user> 替换成你的登陆账号 )C:\Users\<user>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances或用 %LOCALAPPDATA% 环境变量进入该目录比较方便:%LOCALAPPDATA%\Microsoft\Microsoft SQL Server Local DB\Instances这里会列出所有 LocalDB 的实例。在此目录 ( v11.0 ) 下所看到的文件都是实例的相关文纪录、纪录追踪、加密密钥…等等,不过若你在 LocalDB 实例中建立用户数据库时,必须要明确指定其数据文件与记录文件的路径,否则默认所有建立的数据库都会位于 %USERPROFILE% 目录下 ( C:\Users\<username> )。

     二、建立 SQL Server 2012 Express LocalDB 具名实例

      你可以想象一下,一个 SQL 数据库实例就如同一台完整的 SQL Server 数据库服务器,在一个实例里面会有自己的系统数据库 (master, msdb, model, temp),就跟我们一般在使用 SQL Server 没有什么两样,当你建立额外的 LocalDB 实例的话,这些系统数据库就会跟另一个具名实例完全独立开来,彼此完全互不影响。就开发的角度来说,你甚至可以在开发测试的环境里建立一套跟客户端正式主机完全相同的数据库环境,光是这一点就与以往的 SQL Server Express 区别巨大,也是新版 LocalDB 真正厉害的地方!

     三、vs里面如果你新建一个工程,在“服务器资源管理器”里就能看到localdb的“数据连接”项。而且数据连接名称和你的webconfig配置文件里面的一致,如果你再这个配置文件里添加一个字符串连接,你的“服务器资源管理器”的数据连接里就会自动生成这样一个节点,双击这个,就可以添加数据表。比如:我的webconfig文件里有两个字符串链接:

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcMovie-20160305032449.mdf;Initial Catalog=aspnet-MvcMovie-20160305032449;Integrated Security=True" providerName="System.Data.SqlClient"/>
    <add name="MovieDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

同时,我的“服务器资源管理器”里面有以下两个数据连接。如果数据库上有红色的×号,说明没有启动实例(参见下面左侧两个图)。如果要启动实例(参见下面右侧两个图),有以下两种方法:(1)你通过sqllocaldb.exe工具也可以看到是否启动,并用“S”命令可以启动实例。(2)在vs的里直接双击红×图标就可以启动实例,不过,你在这个地方断开连接,又会有红×出现,但是实例并没有关闭,还在后面继续存在。

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第1张图片SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第2张图片SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第3张图片SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第4张图片

      四、LocalDB是否提供了良好的管理接口

      1、LocalDB提供了一个命令行管理工具SqlLocalDB.exe, SqlLocalDB.exe 工具程序的位置请参考以下路径:C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SqlLocalDB.exe 。我们可以在Windows操作系统的CMD命令行中运行 “where SqlLocalDB.exe”命令就能找到它的全路径。然后cd 到它的路径,并输入“SqlLocalDB -?”命令可以看到相关管理指令信息。

     2、参见上面最右侧的图,看到“实例管道名称”,我们就找到了一种用SQL Server Management Studio(SSMS)管理LocalDB的方法?没错,就是在SMSS中利用“实例管道名称”完美管理!在以下地址下载SSMS:https://msdn.microsoft.com/zh-cn/sqlserver2014express,参见“下载说明”-->"单击以注册、下载和安装功能完备的软件 “, 然后 引导到另一个页面,我选择下载64位的”SQL Server2014 Management Studio中快速64位 “,因为我SqlLocalDB.exe安装到的是"Program Files"文件夹,应该是64位,2014的SSMS应该也能管理2012的localdb。下载后安装,然后在SQL Server Management Studio 2014(SSMS)中点击“连接”|“数据库实例”,在“服务器名称”中输入“实例管道名称”(当然,这个地方直接输入数据库实例名称,如“(localdb)\v11.0”也是可以连接成功的。),如图所示确实能正常管理所有的localdb实例,无论是2012还是2014,只要实例管道名称正确就可以。从图中可以看到我的2012localdb 实例里有很多和我的VS项目相对应的数据库文件,如movies数据库。

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第5张图片

     3、在VS开发环境里,也可以建立表格等操作。

     五、ArcGIS 与 Localdb 相连

         1、在ArcGIS里也可以连接,如下图的“添加数据库服务器”,输入localdb的实例名称作为“数据库服务器”,点击确定即可添加成功!!但是,在“添加数据库服务器”的时候,输入“(localdb\v11.0 的时候 发现连接不上)”。

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第6张图片 SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第7张图片

---->添加成功!!,在这个地方右键,查看属性,可以看到localdb是64bit的!! 如下图所示:
 

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第8张图片
     
         可是当我右键“NP__._PIPE......”,点击“新建地理数据库”的时候,弹出“创建此地理数据库时出错 应用程序未获得执行此操作的权限”,真是郁闷,只好去解决问题了,两种思路:(1)赋予权限;(2)我在SSMS里建立数据库,名称为zhstxmy,然后再分离,然后arcgis下面附加,出现以下错误:“选择此地理数据库文件时出现错误 对象关闭时,不允许操作”。于是,我在SSMS下面重新附加数据库,可是出现以下错误:“CREATE FILE encountered operating system error 32(另一个程序正在使用此文件,进程无法访问。) ”,到底是什么在占用呢?用unlocker查看,原来是sqlservr在占用,解锁后,无论我在arcgis下面怎么新建地理数据库,还是附件数据库,均出现错误,但是在SSMS里面刷新,却能看到我确实添加了两个数据库Zhstxmy和hhh,估计是权限的问题,我还得好好看看arcgis和SQL server 的帮助文档再说。哎,真是痛苦,请各位大牛指点。

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第9张图片

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第10张图片

        2、“添加数据库连接”,选择 SQL server ,--->实例的地方输入“(localdb\v11.0)”,可以顺利连接!!在“数据库”下拉列表里可以看到数据库文件。如下图:

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第11张图片
        
        确定之后,右键新添加的数据库连接,然后“启用企业级地理数据库”,根据工具右侧的提示,找到:“C:\Program Files\ESRI\License10.3\sysgen\keycodes”文件,启用成功,就可以源源不断地往“zhstxmy”数据库里导入要素或者栅格数据集了!!导入数据后的SSMS管理页面和ArcGIS的catalog里的截图如下:

SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第12张图片 SQL Server 2012 Express LocalDB 管理并与ArcGIS相连_第13张图片


你可能感兴趣的:(sql,server,2012,LocalDB)