2011-01-31 129 views
1


我最近从我的一位同事恢复了一个数据库到我的本地开发机器。 我以管理员身份登录。我已将默认数据库设置为我尝试连接的那个数据库。我已经在SQL中为Sql的用户映射屏幕提供了管理员用户的db_owner权限。Visual Studio数据库比较工具淹没 - SQL01270:无法打开数据库

但是,当我运行SQL比较工具时,出现以下错误:
SQL01270:无法打开登录请求的数据库“[ADMIN-PC.VirginActive]”。登录失败。 登录失败,用户管理员-PC \ ADMIN“

的SQL日志文件显示如下:
2011-01-31 10:49:20.28登录错误:18456,严重性:14,状态:38 2011-01-31 10:49:20.28用户'admin-PC \ admin'登录失败。原因:无法打开显式指定的数据库。 [客户:]

我查看过“错误:18456,严重性:14,状态:38”。在googlemachine和我得到的反馈是用户无法登录到框。但是,用户是admin用户,是创建db的同一个用户。

有关如何解决此问题的任何想法?

回答

0

这仍然是文件读/写权限的问题,请尝试以管理员身份运行所有程序(如果运行vista/win7)并更改mdf文件的安全设置。

否则,尝试以仅为此目的创建的sql用户身份进行连接。

1

今天我有同样的问题。我发现的修补程序是,如果将数据库的数据库所有者更改为另一个用户(例如,我使用了“sa”),则可以在Visual Studio 2010数据库架构比较中成功连接/进行更改。

要更改数据库所有者,请右键单击数据库名称并转到文件...您的NT帐户最有可能列在那里(我的是)。将其更改为“sa”或其他适当的内容,然后应用这些更改,然后重试。这对我有效。

3

我刚刚解决了同样的问题,但它不是数据库 - 它是架构比较文件本身(.SCMP)。

不知何故,我的SCMP在几个关键位置获得了数据库名称的完全限定的[machine.domain \ instance.database]表示。我在Notepad ++中打开了这个文件,并将其更改为简单名称(在我的例子中只是'DW'),问题立即解决。

(“几个关键位置”是:ConnectionBasedModelProvider内的DatabaseName以及TargetDatabaseName属性的值。)