SQl Server 2012 LocalDb共享访问

时间:2012-07-12 15:22:54

标签: sql sql-server tsql sql-server-2012 localdb

我正在考虑将LocalDB添加到我的应用程序中进行数据存储。

背景:

1)我的申请有2个部分。 一个。桌面客户端。 (在登录计算机的用户下运行) 湾NT服务。 (作为本地系统运行)

NT服务: 1)对我们的后端服务器进行Web服务调用,以获取客户端特定的设置和配置选项 2)上传客户端创建的记录。

桌面应用: 1)加载NT服务下载的设置并根据这些设置运行。 2)创建客户记录。

LocalDB似乎很适合这里但是这两个项目可以同时访问LOCALDB吗?经过一些在线调查后,看起来像LOCALDB共享实例可能是可能的。但这是否意味着NT服务必须始终保持LOCALDB连接的活动状态?

1 个答案:

答案 0 :(得分:2)

完成了与您所描述的非常相似的部署,是的,这可以做到。但是,我强烈建议反对。

一些想法:

  1. LocalDB'实例'需要加载用户个人资料。始终加载的唯一用途配置文件是Local System,即 NT Authority \ SYSTEM 帐户。
  2. 只有“实例”的所有者才能启动或停止它。可以将“自动”实例设置为忽略自动显示超时,但仍必须至少启动一次。我通过创建一个启动了一个引导程序的Windows任务解决了这个问题,该引导程序在启动时清除了“ sqllocaldb start v11.0 ”。 Windows任务使用“低于正常”进程优先级执行,因此启动的引导程序实际上将SQLEnv.exe优先级提升到了我的用例的高位。
  3. 假设您使用 NT Authority \ SYSTEM 作为实例配置文件,使用SQL Management Studio之类的东西可能需要在系统上使用PsExec。这是一种安全风险,因为它为您提供了对作为本地系统运行的进程的交互式访问。不要这样做。
  4. 我们使用组来访问我们的客户端部分,因此我们将这些组的访问权限授予实际的数据库/实例。没有它,几乎不可能授予新用户访问实例/数据库的权限。
  5. 您真的需要一个数据库,或者胖客户端是否可以将文件写入服务然后检查(或构建缓冲区)并发送的每条记录的特定位置?

    另一种方法是删除NT服务并使其功能成为客户端启动过程的一部分。为什么有一个长时间运行的进程不断检查配置更改,只有在用户正在使用系统时才推送数据?假设您没有要求/现有系统。