无法连接到SQLSERVER 2008 R2 EXPRESS

时间:2011-12-16 13:22:01

标签: sql-server-2008 database-connection user-accounts

我在SQLSERVER (2008 R2 EXPRESS)管理员列表中。我在我的机器上担任管理员角色。我可以使用ServerName手动连接到SQLSERVER(通过Management Tools)(在我的例子中是S-PROG-T\SQLEXPRESS)。在安装过程中,我决定只使用Windows Authentication模式。我无法连接到SS。

错误讯息为: Login failed for user S-PROG-T\admin. Cannot open database 'ProjectDB' requested by the login.

我正在使用NHibernate的以下配置:

<session-factory>
    <property name="connection.provider">
        NHibernate.Connection.DriverConnectionProvider
    </property>
    <property name="dialect">
        NHibernate.Dialect.MsSql2008Dialect
    </property>
    <property name="connection.driver_class">
        NHibernate.Driver.Sql2008ClientDriver
    </property>
    <property name="connection.connection_string">
        Data Source=S-PROG-T\SQLEXPRESS;Initial Catalog=ProjectDB;Integrated Security=SSPI
    </property>
    <property name="show_sql">
        true
    </property>
    <mapping resource="Project.Domain.Model.Entities.Mappings.Vehicle.hbm.xml" assembly="Project.Domain" />
 </session-factory>

我尝试使用.\SQLEXPRESS数据源进行连接。入站规则不限制SSMS。

怎么了? 谢谢!

编辑:单元测试

所有内容(nhibernate配置和架构导出试用版)都在我的单元测试中开始(我不知道这是否重要)。

[TestFixture]
public class VehicleFixture
{
    [Test]
    public void TestSchemaExport()
    {
        new SchemaExport(new Configuration().Configure()).Execute(false, true, false);
    }
}

编辑:记录信息

我在日志中发现了下一个信息(路径:%ProgramFiles%\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Log\):

Error: 18456; State: 38.

Login failed for user ‘S-PROG-T\Admin’.

Reason: Failed to open the explicitly specified database.

根据文章:http://sql-articles.com/articles/troubleshooting/troubleshooting-login-failed-error-18456/数据库不存在或登录无法访问数据库。

我完全糊涂了。我是否应该在尝试导出架构之前(手动)创建数据库(对不起,如果问题很愚蠢)?

编辑:使用混合身份验证模式

我已设置了混合模式身份验证,并使用serveradmin&amp;创建了新的登录信息。 sysadmin个角色。但是除了用户名之外,错误消息仍然相同。我可以再次使用登录名和密码手动执行相同的操作(连接并创建数据库)。

3 个答案:

答案 0 :(得分:1)

确定。我误解了整个过程。一切都可以通过身份验证,而不是连接字符串。我只是认为模式导出代表数据库自动创建,然后是模式导出。所以我创建了一个数据库并成功导出了一个模式。

答案 1 :(得分:0)

如果将数据库更改为“master”,是否可以连接NHibernate?

ProjectDB数据库用户S-PROG-T \ admin是否已映射到您使用管理工具进行连接的服务器登录?

您是否可以使用属性名称=“connection.connection_string”中的用户/密码组合连接到数据库,而不是使用集成安全性= SSPI?

编辑您写的是您创建了新登录信息。但仍然 - 登录是用于 SERVER 身份验证的内容。您必须将ProjectDB中的数据库用户映射到服务器登录才能访问数据库。

看看这个帖子:TSQL to Map User to Database

或在此处阅读:http://www.nerdymusings.com/LPMArticle.asp?ID=41

答案 2 :(得分:-1)

网站不会使用相同的身份,因此不会是管理员。您可以定义特定标识并设置ApplicationPool(或您自己的管理员帐户)以使用它。或者,使用登录/密码而不是集成安全性。