如何与同一台机器上的其他用户共享SQL LocalDb?

时间:2013-04-10 01:41:36

标签: c# sql-server-2012 localdb

我正在寻找使用sqllocaldb命令实用程序的share命令在用户之间访问LocalDb数据库的方法,但是我看不到在另一个用户中创建的数据库。

以下是我的步骤:

  1. 在Windows 7上登录用户User1

  2. 使用sqlcmd创建一个名为test的新数据库,如下所示

    sqlcmd -S(localdb)\ v11.0 创建数据库测试

  3. 使用User2

    按如下方式共享实例v11.0

    sqllocaldb共享域\ User2 v11.0 myinstance

  4. 切换到用户2

  5. 按如下方式登录共享实例

    sqlcmd -S(localdb)\。\ myinstance

    从sys.master_files中选择名称

    上述查询未显示测试数据库。

  6. 为什么我无法在共享后看到User1中创建的用户2中的数据库?

    我认为它必须基于Krzysztof Kozielczyk的博客(方法2)http://blogs.msdn.com/b/sqlexpress/archive/2011/12/09/using-localdb-with-full-iis-part-2-instance-ownership.aspx#SharedLocalDB,但事实并非如此。

    感谢任何帮助/建议。

    由于 削

2 个答案:

答案 0 :(得分:15)

这不起作用的原因是因为你发出了错误的命令。 sqllocaldb.exe的使用说明是:

share|h ["owner SID or account"] "private name" "shared name"

基于此,您的第二个命令应该是创建实例的SID或帐户,而不是您要与之共享实例的帐户。共享与计算机上所有帐户共享一个实例。

假设您的帐户创建了您要共享的实例,那么您应该发出的命令是:

sqllocaldb share v11.0 myinstance

否则,它应该是:

sqllocaldb share "<account that created the instance>" v11.0 myinstance

在任何一种情况下,您还需要确保运行提升的命令窗口,以便可以成功共享它。

答案 1 :(得分:3)

问题是LocalDB作为当前用户拥有的进程运行,这意味着每个用户都运行自己的LocalDB实例。这就是使其零配置并且非常容易使用的原因。不幸的是,这也意味着很难拥有共享的LocalDB实例。我遇到了类似的问题,只是转而使用SQL Express作为我需要在开发中被多个用户访问的数据库。